Skip to content

fix: stabilize dashboard, fix AI insights mapping and user profiles#7

Merged
mmujtabah merged 1 commit into
mainfrom
feat/dashboard-finalization-v2
May 3, 2026
Merged

fix: stabilize dashboard, fix AI insights mapping and user profiles#7
mmujtabah merged 1 commit into
mainfrom
feat/dashboard-finalization-v2

Conversation

@mmujtabah
Copy link
Copy Markdown
Member

  • 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.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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;
@mmujtabah mmujtabah merged commit b0ea251 into main May 3, 2026
9 of 14 checks passed
@mmujtabah mmujtabah deleted the feat/dashboard-finalization-v2 branch May 3, 2026 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants