Skip to content

[BUG] Summary generation is never retriggered after interval-based early return during silence #714

Description

@Shreya-nipunge

📌 Bug Description

The summarization workflow in background.ts is triggered only when new transcript chunks arrive.

Inside summarizeTranscriptIfNeeded(), the function exits early when the configured summary interval has not yet elapsed:

const elapsed = Math.floor((Date.now() - lastSum) / 1000);
if (lastSum > 0 && elapsed < intervalSeconds) return;

If transcript updates arrive shortly after a summary has been generated, the function returns without scheduling a future retry.

As a result, if the meeting becomes silent or ends before another transcript chunk arrives, the latest transcript content may never be included in the generated summary or action items.

During shutdown (stopAudioCapture()savePendingSession()), the extension saves the current session state but does not trigger a final summary generation before persisting the session.

What went wrong?

Summary generation depends entirely on future transcript activity.

What feature is affected?

Meeting summaries and action item generation.

When does the issue occur?

When new transcript content arrives before the summary interval expires and the meeting subsequently becomes silent or ends.


🔄 Steps to Reproduce

  1. Start a Google Meet session with Late-Meet enabled.
  2. Allow a summary to be generated successfully.
  3. Continue speaking and generate additional transcript content shortly after the summary runs.
  4. Ensure the elapsed time is still below the configured summary interval.
  5. Stop speaking or end the meeting before another transcript chunk arrives after the interval expires.
  6. Open the saved meeting session and review the generated summary and action items.

✅ Expected Behavior

  • If summarization is skipped because the interval has not elapsed, a delayed retry should be scheduled automatically.
  • Alternatively, a final summary should be generated before the session is saved when recording stops.
  • The latest transcript content should always be reflected in the final summary and action items.

❌ Actual Behavior

  • summarizeTranscriptIfNeeded() returns early when the interval guard is hit.
  • No delayed retry is scheduled.
  • If no additional transcript chunks arrive, summary generation is never retriggered.
  • The saved meeting summary and action items may not reflect the latest transcript content.

📸 Screenshots / Recordings

Not applicable.

The issue was identified through code inspection of:

  • summarizeTranscriptIfNeeded()
  • stopAudioCapture()
  • savePendingSession()

in src/background.ts.


💻 Environment

Chrome Version: Any supported version

Operating System: Any

Extension Version: Current main branch

Transcription Provider:

  • ElevenLabs
  • OpenAI Whisper
  • Both

🧾 Console Errors

No console errors are generated.

The issue is caused by workflow logic rather than a runtime exception.


📝 Additional Context

Root Cause

The summarization pipeline is passive and event-driven.

When the interval check fails:

if (lastSum > 0 && elapsed < intervalSeconds) return;

the function exits without scheduling a follow-up run.

Because summary generation is only triggered by incoming transcript chunks, a period of silence or a meeting ending can prevent the latest transcript updates from ever being summarized.

Suggested Fix

  • Schedule a delayed retry using setTimeout or chrome.alarms when the interval guard prevents summarization.
  • Force a final summary generation before persisting the session during shutdown if there is unsummarized transcript content.

Reproducibility

Based on the current code path, this behavior should occur consistently whenever:

  1. Transcript updates arrive before the summary interval expires.
  2. No additional transcript chunks arrive afterward.

🏷️ Metadata

Recommended Labels: bug

Metadata

Metadata

Labels

bugSomething isn't workinggssocOfficial GSSoC contribution issuegssoc:approvedGSSoC: PR approved and scoredsecurity-reviewRequires security review before mergesize/Mtype:codeType: Code changetype:configType: Configuration changetype:designType: Design / UI / UX (Optional bonus)type:featureType: New Featuretype:testType: Test files

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions