Repository navigation
Conversation
Member
|
Thanks for the thorough testing here. We require Greptile 5/5 on the latest commit and green CI before review, so please rebase on current main (the branch is far behind) and trigger a Greptile re-review on the angle-bracket fix. |
pavzagor
force-pushed
the
codex/assemblyai-diarization
branch
from
October 7, 2026 15:31
ce473cc to
9f73a8b
Compare
Author
|
@greptileai review |
Author
|
@greptileai review |
Contributor
|
Want your agent to iterate on Greptile's feedback? Try greploops. |
Author
|
@greptileai review |
Author
|
@greptileai review Generated by Claude Code |
Author
This branch has not been deployed
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.
Cap already stores AssemblyAI word speakers, but transcription did not request them and captions/UI discarded them. This enables diarization for full recordings and editable-transcript backfills, shows Speaker A/B labels in the transcript, editor and player captions, and preserves labels through transcript edits, video cuts, copying, VTT/text downloads and agent API round-trips. Existing transcripts without labels continue to render normally.
Live chunks remain provisional and use no speaker labels: AssemblyAI identities are scoped to a transcription request. On recording completion, Cap queues a full-recording transcription instead of promoting independent chunks into a misleading final transcript. This adds a full transcription pass for recordings previously eligible for live promotion; the final labels appear when that pass completes. Queue failures propagate for workflow retry.
Validation:
pnpm typecheckandpnpm exec biome ci . --linter-enabled=falsepassed; scoped Biome checks passed.b7ffdd4a-2d21-4425-b8bd-bffa3f28159f.Also corrected the existing Slack-manifest test's stale expected brand color to match the current manifest, so the full web suite passes. No database migration is required; uses the existing
ASSEMBLY_API_KEY(see the October 7 update for the new optionalCAP_LIVE_TRANSCRIPTIONsetting).Upstream validation on
2766dc0: CI and Recording Reliability passed. Greptile re-reviewed 24 files and added no new comments; security checks passed. Vercel preview remains blocked on Cap Software team authorization.October 5 review fixes
Legacy cues containing literal text such as
2 < 3no longer lose text. The parser strips recognized WebVTT tags and timestamps, then decodes entities; escaped VTT writes and React text rendering remain intact. Regression coverage includes caption display, copying, downloads, and the agent API.Validation on
ce473ccc: 49 focused transcript tests and 27 scheduling/live-handoff tests passed; scoped Biome passed. The actual-component transcript fixture used by #2417 also verifies complete literal text.Cost-control review: recording-wide speaker identities require one canonical full-recording pass after provisional live chunks. This deliberately adds a pass to the previous successful-live-promotion path. The pre-feature workflow already used chunk transcription plus a full pass when promotion failed (
321ae61b9,queueFullPassFallback). The canonical database claim prevents competing triggers from scheduling multiple canonical passes. Account-wide usage budgets and trusted media-duration enforcement remain broader pre-existing cost-control gaps; this change does not establish a new quota policy.October 7 update
Rebased on current
main(d327051).CAP_LIVE_TRANSCRIPTION(defaultfalse), defined with the existingboolStringhelper next toASSEMBLY_API_KEY. With it off, instant recordings get exactly one full-recording transcription with speaker labels, so no recording is transcribed twice. Setting it totruerestores provisional live transcripts, which then adds the full speaker-labelled pass after each live recording. Documented inself-hosting.mdxanddocker-compose.coolify.env.example.parseAgentVttstrips complete markup tags from the raw cue before decoding entities, so escaped speech such as<value>survives and unfinished literal text such asBefore <scriptis kept, matching the transcript view and exports. The existingagent-api.test.tsexpectation for the unterminated case was updated accordingly; complete tags such as<script>…</script>are still removed.Validation on
50ae1be:bun run typecheckpasses; full web suite 3,461 passed / 28 skipped; scoped Biome clean. Greptile 5/5 on50ae1be.The PR appears safe to merge based on the reviewed changes.
Summary
This PR requests speaker diarization for full-recording transcription and carries speaker labels through captions, transcript editing, exports, and agent API round-trips. It makes provisional live transcription opt-in and validates that translations retain cue structure and speaker tags.
Reviews (5) · Last reviewed commit: "fix: keep unfinished literal text in age..." · Reviewed by Greptile