fix: stabilize dashboard, fix AI insights mapping and user profiles#7
Merged
Conversation
Member
mmujtabah
commented
May 3, 2026
- Fixed 500 errors on /api/v1/users/me by implementing lazy profile creation and fallback to auth metadata (full_name/email).
- Fixed frontend crash (RangeError) in MeetingDetailPage by updating timestamp field mapping (start_secs).
- Fixed AI insights mapping to correctly extract summary, topics, and action items from the combined backend output.
- Fixed missing duration_secs in live transcription sessions by calculating it on session end.
- Reconstructed full text in AI processing worker for live meetings to ensure summaries are generated.
- Added comprehensive unified SQL migration for full database reset.
- Ensured transcription routes are properly authenticated and linked to user IDs.
- Fixed 500 errors on /api/v1/users/me by implementing lazy profile creation and fallback to auth metadata (full_name/email). - Fixed frontend crash (RangeError) in MeetingDetailPage by updating timestamp field mapping (start_secs). - Fixed AI insights mapping to correctly extract summary, topics, and action items from the combined backend output. - Fixed missing duration_secs in live transcription sessions by calculating it on session end. - Reconstructed full text in AI processing worker for live meetings to ensure summaries are generated. - Added comprehensive unified SQL migration for full database reset. - Ensured transcription routes are properly authenticated and linked to user IDs.
There was a problem hiding this comment.
Pull request overview
This PR tightens the live/upload transcription flow and dashboard rendering around Minutely’s meeting pipeline, while also adding a full-reset Supabase schema intended to recreate the app’s backend state from scratch.
Changes:
- Authenticated the transcription start/end/upload routes and propagated the authenticated user into lazily created meeting/media records.
- Updated dashboard meeting detail rendering to consume the newer combined AI output shape and transcript timestamp fields.
- Added a consolidated full-reset SQL migration covering schema, RLS, views, and dashboard stats helpers.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| react/features/transcription/middleware.ts | Adds auth headers to live transcription start/end requests. |
| react/features/dashboard/components/MeetingDetailPage.tsx | Remaps AI insights and transcript timestamp rendering on the meeting detail page. |
| minutely-api/supabase/migrations/999999_full_reset.sql | Introduces a full database reset schema, policies, views, and stats RPC. |
| minutely-api/internal/workers/file_processor.go | Reconstructs transcript full text from segments before AI processing. |
| minutely-api/internal/transport/http/transcription_handler.go | Associates uploads/lazy-created meetings with the authenticated user. |
| minutely-api/internal/transport/http/middleware/auth.go | Enriches request context with user metadata from Supabase auth. |
| minutely-api/internal/transport/http/live_transcription_handler.go | Associates lazily created live meetings with the authenticated user. |
| minutely-api/internal/transport/http/handlers.go | Falls back to auth metadata when returning incomplete profiles. |
| minutely-api/internal/core/services/transcription_service.go | Computes live transcript duration when ending a session. |
| minutely-api/internal/core/services/profile_service.go | Adds lazy profile creation on profile lookup failure. |
| minutely-api/internal/core/domain/profile.go | Extends the profile repository contract with create support. |
| minutely-api/internal/adapters/postgres/supabase_repo.go | Implements profile creation in the Supabase-backed repo. |
| minutely-api/internal/adapters/postgres/dummy_repo.go | Adds no-op profile creation to the dummy repo. |
| minutely-api/cmd/api/main.go | Moves upload/start/end meeting routes under auth middleware. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| r.Get("/", handler.ListMeetings) | ||
| r.Get("/summaries", handler.ListMeetingSummaries) | ||
| r.Get("/{id}", handler.GetMeeting) | ||
| r.Post("/{meetingId}/recordings/upload", transcriptionHandler.UploadRecording) |
Comment on lines
+19
to
+26
| profile, err := s.repo.GetByID(ctx, id) | ||
| if err != nil { | ||
| // If profile not found, create a default one (lazy creation) | ||
| // This handles cases where the profiles table was reset but the auth user still exists | ||
| newProfile := &domain.Profile{ | ||
| ID: id, | ||
| } | ||
| if err := s.repo.Create(ctx, newProfile); err != nil { |
| WHERE meeting_id = m.id AND status = 'open' | ||
| ) as open_action_items | ||
| FROM public.meetings m | ||
| LEFT JOIN public.transcripts t ON t.meeting_id = m.id; |
Comment on lines
+519
to
+528
| 'total_meetings', COUNT(DISTINCT m.id), | ||
| 'hours_transcribed', COALESCE(SUM(t.duration_secs) / 3600.0, 0), | ||
| 'open_action_items', COUNT(DISTINCT ai.id) FILTER (WHERE ai.status = 'open'), | ||
| 'people_met', COUNT(DISTINCT ts.speaker_email) | ||
| ) | ||
| FROM public.meetings m | ||
| LEFT JOIN public.transcripts t ON t.meeting_id = m.id | ||
| LEFT JOIN public.action_items ai ON ai.meeting_id = m.id | ||
| LEFT JOIN public.transcript_segments ts ON ts.transcript_id = t.id | ||
| WHERE m.user_id = p_user_id; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.