Skip to content

Companion record hand-off and diarization surfacing - #167

Merged
pratikbodkhe merged 6 commits into
mainfrom
feat/capture-trigger
Jul 18, 2026
Merged

Companion record hand-off and diarization surfacing#167
pratikbodkhe merged 6 commits into
mainfrom
feat/capture-trigger

Conversation

@pratikbodkhe

Copy link
Copy Markdown
Contributor

Closes the missing link in the capture chain: starting a meeting now hands recording off to the desktop companion, and instances learn when their transcripts will not carry speaker labels.

  • New companion deep-link module (minutia://record?meeting_id=<lowercase uuid>, uuid-validated) shared with the auth callback; verifier pnpm test:companion-links.
  • On the starter's own meeting start (macOS + companion seen), the app fires the record deep link once per meeting per session and shows a quiet toast; a "Record with companion" affordance sits next to the browser recorder while idle. No auto-record without the user's action.
  • Admin health gains a transcription probe (ok with diarization, degraded when transcription-only); the AI settings card warns when speaker labels are off, with setup docs in README and .env.example.
  • E2E asserts the exact hand-off link on a live meeting under a Mac UA.

Desktop counterpart: minutia-desktop PR adds the deep-link router and record command (same-meeting no-op, different-meeting reject, cold-launch session rehydration).

Add src/lib/companion-links.ts with buildCompanionAuthCallbackUrl,
buildCompanionRecordUrl (lowercases + uuid-validates the meeting id, the
companion storage RLS is lowercase-sensitive) and isMacPlatform. Refactor the
authorize client onto the shared builder and cover the module with a verifier.
On a live meeting a manager with a known macOS companion sees a 'Record with
companion' affordance beside the browser recorder, and starting the meeting
fires the minutia://record deep link once per meeting per browser session
(sessionStorage-guarded) with a one-line toast. Falls back to the existing
install prompt when no companion has checked in.
Add a transcription probe to /api/admin/health (ok = diarization on, degraded =
transcription only, unconfigured = no provider) and a quiet callout in the admin
AI settings card when transcription runs without speaker labels. GET
/api/admin/config now returns a read-only diarization_configured flag. Document
speaker diarization in the README and sharpen the .env.example provider notes.
On a live meeting, a macOS manager whose companion has checked in sees a
'Record with companion' link pointing at minutia://record with the lowercase
meeting id. Seeds companion_last_seen_at via service role and forces macOS via
navigator.userAgentData; no real scheme navigation is attempted.
@pratikbodkhe
pratikbodkhe merged commit 68e6cb0 into main Jul 18, 2026
18 checks passed
@pratikbodkhe
pratikbodkhe deleted the feat/capture-trigger branch July 18, 2026 15:45
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.

1 participant