Repository navigation
fix(sdk-recorder): release capture after encoder failures - #3412
Open
vedanth-jadhav wants to merge 1 commit into
Open
vedanth-jadhav wants to merge 1 commit into
vedanth-jadhav wants to merge 1 commit into
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This was referenced Oct 26, 2026
CodeGovindz
added a commit
to CodeGovindz/receipts
that referenced
this pull request
Oct 27, 2026
Covers the problem, the live app, how the pipeline and its guards work, the three false alarms found on CapSoftware/Cap#3412 and how they were fixed, how to use Receipts on the web, in Alan, from any MCP client and from the command line, self-hosting on Vercel with a Bedrock-only IAM policy, development scripts and limitations. Adds a screenshot of a real report.
CodeGovindz
added a commit
to CodeGovindz/receipts
that referenced
this pull request
Oct 27, 2026
- The web app ran every check twice: Next.js syncs history.replaceState into useSearchParams, so the ?pr= auto-run fired again after a manual run. Any run now marks the auto-run as done. - The quote guard dropped real claims because the extraction model shortens long quotes with "...". Each "..." is now a gap: the remaining fragments must still appear in the PR text, in order, so invented quotes are still rejected. The prompt also asks for exact quotes. On CapSoftware/Cap#3412 this takes dropped claims from 5 to 0. - Extraction output limit raised from 1000 to 3000 tokens; 12 claims could overflow it and force a retry.
This branch was previously 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.
When a browser encoder raises
MediaRecorder.error, the SDK stays in its recording/paused phase, retains the camera and microphone, and keeps its timers alive. If the failure happens while stopping, it can also upload the failed encoder's partial output.Handle errors only for the current encoder, release capture and timers before notifying listeners, and transition to
erroronce. Resolve the stop gate with the original error so a pendingstop()rejects without uploading or creating an unhandled rejection. Late events from a destroyed/replaced encoder cannot affect the replacement. The listener-registration cast is reused for unsubscribe to fix the existing strict-TypeScript error while validating this source; this supporting change is identical to #3380/#3387.Validation: all 41 SDK tests pass. Six new cases cover active/paused failures, timer cleanup, missing native error details, failure during stop, a late old-encoder error, and replacement from an error handler; five fail before the fix. Full SDK strict typecheck and ESM/declaration build, strict new-test typecheck, scoped Biome and diff checks pass.
Reproduce:
bun test packages/sdk-recorder, thencd packages/sdk-recorder && bun run typecheck && bun run build.This handles capture-time encoding errors; #3380 handles asynchronous upload ownership. Their combined 49-test suite and package typecheck also pass locally after combining their overlapping stop-gate changes. Browser media devices/events are controlled in tests; physical capture and codec failures were not exercised. No dependencies or public signatures change.


Confidence Score: 5/5
The PR appears safe to merge.Summary
The SDK now releases capture and timers when the current encoder fails.
vedanth-jadhav explicitly assigns asynchronous upload ownership to #3380.
Reviews (1) · Last reviewed commit: "fix(sdk-recorder): release capture after..." · Reviewed by Greptile