Skip to content

[6/12] feat: meeting platform — detection, session lifecycle, live transcription, import, notes - #15

Open
Mvkd108 wants to merge 6 commits into
feat/dictation-hotkey-modelfrom
feat/meeting-qualification
Open

[6/12] feat: meeting platform — detection, session lifecycle, live transcription, import, notes#15
Mvkd108 wants to merge 6 commits into
feat/dictation-hotkey-modelfrom
feat/meeting-qualification

Conversation

@Mvkd108

@Mvkd108 Mvkd108 commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Status: REVIEW ONLY — do not merge. PR 6 of 12 in a stacked series; stacked on #14. This PR shows only its own chunk. Series intro, divergence notes and full map: #10. Next: #16.

This PR (6/12): meeting platform — detection, session lifecycle, live transcription, import, notes

Commits:

  • ca5c577 feat: meeting URL parsing, candidate resolution and presence signals — Services/MeetingUrlParser.cs, Services/MeetingCandidateResolver.cs, Services/MeetingPresenceSignals.cs, Services/MeetingPlatformBadge.cs
  • b65fcdc feat: meeting session state machine, transcript timeline and journal store — Services/MeetingSessionStateMachine.cs, Services/MeetingTranscriptTimeline.cs, Services/MeetingSessionJournalStore.cs, docs/WINDOWS_MEETING_SESSION_LIFECYCLE.md
  • 7c551cb feat: live meeting transcription with gap recovery and audio health monitoring — Services/MeetingLiveTranscriptionSession.cs, Services/MeetingGapRecoveryService.cs, Services/MeetingAudioHealthMonitor.cs, Services/LiveTranscriptOwnershipDescriptor.cs
  • 15b61fd feat: media import formats and import progress mapping — Services/MediaImportFormats.cs, Services/MeetingImportProgressMapper.cs
  • 5abf59c feat: meeting notes composer, recording playback and summary provider disclosure — Services/MeetingNotesComposer.cs, Services/MeetingRecordingPlaybackService.cs, Services/SummaryProviderDisclosure.cs
  • 210c5d4 feat: meeting qualification service — Services/MeetingQualificationService.cs, Services/MeetingCapturePolicies.cs

19 files, +3,642.

Review focus

  • MeetingSessionStateMachine — detected → recording → finalizing → done transitions; abandonment and crash-resume via MeetingSessionJournalStore (docs/WINDOWS_MEETING_SESSION_LIFECYCLE.md is the contract).
  • MeetingLiveTranscriptionSession + MeetingGapRecoveryService — behavior across audio route changes and dropouts (Bluetooth, device switch).
  • MeetingAudioHealthMonitor — silence/dead-device detection thresholds.
  • MediaImportFormats + MeetingImportProgressMapper — format coverage and progress reporting accuracy.
  • SummaryProviderDisclosure — honesty about which provider produced notes (parity requirement).

Expected — do not flag: live transcription ships Off by default (see Known limits); UI wiring lands in PR 9/10.

Known limits

  • Live transcription is Off pending physical qualification: long meetings, audio-route changes, Bluetooth devices, CUDA-live, multilingual — all require real hardware sessions.
  • Media import has no progress indicator and no cancel in the UI (service-level contracts are tested in PR 11; UI is follow-up).
  • Per-format WER/CER is unverified; import-path diarization/title/templates never exercised end-to-end.
  • PDF pagination and auto-open-on-export untested interactively.

Test evidence

  • Full stack at tip: build clean (--no-restore); 484/484 passing.
  • Suite lands in PR 11; classes covering this chunk: Phase3MeetingLifecycleTests, Phase4LiveTranscriptionTests, Phase5FinalizationTests, Phase6DetectionTests, Phase7NotesTests, Phase8MediaImportTests, Phase8ImportCancellationTests, Phase8ExportTests.

Previous: #14 | Next: #16

Copilot AI lite review requested due to automatic review settings August 4, 2026 09:04
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d167f775-9c84-4d6a-ab5c-0975dc93da90

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Not ready to approve

There are correctness issues in crash-recovery WAV parsing and segment overlap logic (plus some detection/disclosure edge cases) that could cause corrupted audio repair or dropped transcript content.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

This review doesn't count toward merge requirements. Sign up for the private preview to control whether Copilot approvals count.

Pull request overview

Implements the core “meeting platform” layer for the Windows-native app: meeting detection + corroboration signals, session lifecycle/journaling with crash recovery, live transcription with gap recovery, media import format support + progress mapping, notes/title composition, playback, and a single-source-of-truth disclosure model for summary providers.

Changes:

  • Added meeting detection primitives (URL parsing, platform badges, presence signals, candidate resolver) and capture policies.
  • Added durable session lifecycle components (state machine, journal store + WAV crash recovery, transcript timeline normalization) plus documentation contract.
  • Added live transcription pipeline (streaming recognizer/VAD session, gap recovery), plus import formats/progress mapping, playback service, notes composition, and qualification runner.
File summaries
File Description
windows-native/Muesli.Windows/Services/SummaryProviderDisclosure.cs Centralizes provider privacy disclosure + “leaves machine” logic (incl. Ollama endpoint special-case).
windows-native/Muesli.Windows/Services/MeetingUrlParser.cs Strict meeting-URL recognition for supported platforms.
windows-native/Muesli.Windows/Services/MeetingTranscriptTimeline.cs Maps concatenated-track timestamps back onto meeting-time for correct merges.
windows-native/Muesli.Windows/Services/MeetingSessionStateMachine.cs Defines session states/triggers with bounded transition history.
windows-native/Muesli.Windows/Services/MeetingSessionJournalStore.cs Persists session journal + manages part adoption/final track combine + WAV header repair.
windows-native/Muesli.Windows/Services/MeetingRecordingPlaybackService.cs In-process NAudio playback service for meeting recordings.
windows-native/Muesli.Windows/Services/MeetingQualificationService.cs Runs repeated ASR/diarization benchmarks and determinism checks for qualification.
windows-native/Muesli.Windows/Services/MeetingPresenceSignals.cs Reads microphone/camera usage signals and dedicated-process heuristics.
windows-native/Muesli.Windows/Services/MeetingPlatformBadge.cs Defines platform badge metadata for UI prompts.
windows-native/Muesli.Windows/Services/MeetingNotesComposer.cs Deterministic title generation + safe resummarization/notes composition.
windows-native/Muesli.Windows/Services/MeetingLiveTranscriptionSession.cs Streaming transcription session with bounded queueing, VAD commits, and gap ledgering.
windows-native/Muesli.Windows/Services/MeetingImportProgressMapper.cs Maps pipeline stages/fractions to a monotonic overall progress indicator.
windows-native/Muesli.Windows/Services/MeetingGapRecoveryService.cs Re-transcribes measured gaps from retained audio and merges recovered segments.
windows-native/Muesli.Windows/Services/MeetingCapturePolicies.cs Defines repair backoff policy and auto-stop tracking rules.
windows-native/Muesli.Windows/Services/MeetingCandidateResolver.cs Converts presence snapshots into prompt/ended decisions with hysteresis + dismissal memory.
windows-native/Muesli.Windows/Services/MeetingAudioHealthMonitor.cs Detects missing/silent/clipping audio channels and produces user-safe warnings.
windows-native/Muesli.Windows/Services/MediaImportFormats.cs Declares qualified import formats + actionable conversion guidance/filter string.
windows-native/Muesli.Windows/Services/LiveTranscriptOwnershipDescriptor.cs Single definition of live/final/gap-recovery ownership labeling and settings projection.
docs/WINDOWS_MEETING_SESSION_LIFECYCLE.md Documents the Windows meeting session lifecycle contract and operational expectations.
Review details
  • Files reviewed: 19/19 changed files
  • Comments generated: 5
  • Review effort level: Lite

We're testing this review assessment. Please use 👍 or 👎 to tell us if it's correct.

Comment on lines +583 to +593
private static int FindDataChunk(ReadOnlySpan<byte> header)
{
for (var index = 12; index + 8 <= header.Length; index += 2)
{
if (header.Slice(index, 4).SequenceEqual("data"u8))
{
return index;
}
}
return -1;
}
Comment on lines +115 to +116
private static bool Overlaps(TranscriptSegment first, TranscriptSegment second) =>
Math.Min(first.EndMs, second.EndMs) >= Math.Max(first.StartMs, second.StartMs);
Comment on lines +85 to +90
public static bool IsLoopbackEndpoint(string? endpoint)
{
if (string.IsNullOrWhiteSpace(endpoint)) return true;
if (!Uri.TryCreate(endpoint.Trim(), UriKind.Absolute, out var uri)) return false;
return uri.IsLoopback;
}
Comment on lines +98 to +101
if (path.StartsWith("l/meetup-join", StringComparison.Ordinal) ||
path.StartsWith("meet/", StringComparison.Ordinal) ||
path.StartsWith("l/message", StringComparison.Ordinal) == false && path.StartsWith("dl/launcher", StringComparison.Ordinal))
{
Comment on lines +108 to +120
"Zoom",
"Zoom Workplace",
"CptHost", // Zoom's in-meeting window host; present only during a live meeting
"ms-teams",
"Teams",
"Webex",
"webexmta",
"CiscoCollabHost",
"atmgr", // Webex meeting manager
"chime",
"Amazon Chime",
"slack", // Slack huddles run in the desktop client
"Discord"
Mvkd108 and others added 6 commits August 18, 2026 20:11
Adds parsing for Zoom, Teams and Meet URLs, resolution of the most likely
active meeting from open windows and calendar entries, presence signals
from process and audio state, and platform badges for the UI.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…nal store

Models a meeting session as explicit states with legal transitions, keeps
an ordered transcript timeline, records live-transcript window ownership,
and journals session state to disk so a crash mid-meeting can be recovered.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…th monitoring

Drives streaming recognition for the duration of a meeting, detects and
backfills gaps where the stream dropped, and monitors capture health so
silent or dead devices are reported rather than silently producing nothing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Declares the audio and video containers accepted for transcript import
and maps decoder plus recogniser progress onto a single progress bar.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ider disclosure

Composes structured notes from transcript and summary output, adds
playback of the meeting recording aligned to the transcript, and states
plainly which provider processed a summary and whether it left the device.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Runs an end-to-end readiness check over runtime, models and capture
devices before a meeting starts so failures surface up front.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Mvkd108
Mvkd108 force-pushed the feat/meeting-qualification branch from 210c5d4 to c70ea3b Compare August 18, 2026 14:44
@claude

claude Bot commented Aug 18, 2026

Copy link
Copy Markdown

Claude finished @Mvkd108's task in 8m 36s —— View job


Claude is reviewing this PR

Todo list

  • Gather context (PR body, review focus, existing Copilot comments, CLAUDE.md)
  • Confirm diff scope (origin/feat/dictation-hotkey-model...HEAD, 20 files, +3662)
  • Run full multi-agent /code-review across all 20 files
  • Post findings to the comment

Branch: feat/meeting-qualification

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