fix(studio): delay ObjectURL revocation + silence TS7 deprecation warnings#795
fix(studio): delay ObjectURL revocation + silence TS7 deprecation warnings#795Jefsky wants to merge 3 commits into
Conversation
Only seek when the current playback time is outside the selected clip's range. When the user clicks a layer whose clip already contains the current time, the seek is skipped — avoiding unwanted preview jumps during playback. Fixes heygen-com#792
Replace manual backslash/single-quote escaping with JSON.stringify() in caption JS generation. The manual approach missed newlines, carriage returns, and other special characters that can break the generated JavaScript syntax. JSON.stringify handles all special characters and produces a double-quoted string literal that is always valid JS. Fixes heygen-com#625
setTimeout(..., 0) fires before the browser has started reading from the blob, causing empty/failed frame captures. Increase the delay to 1000ms to give the browser time to initiate the download before the blob URL is revoked. Also adds ignoreDeprecations: "5.0" to cli and studio tsconfigs to silence TypeScript 7.0 baseUrl deprecation warnings, and rootDir: ".." to cli/tsconfig.json to fix the "common source directory" warning from paths-based module resolution. Fixes heygen-com#622 Fixes heygen-com#472
vanceingalls
left a comment
There was a problem hiding this comment.
First review at d93fa954.
Blocker — LayersPanel.tsx added as a NEW FILE bundled with three unrelated fixes
The PR body says "Two unrelated fixes bundled in one PR" (ObjectURL revoke timing + TS deprecation warnings), but the diff actually contains THREE fixes plus a fourth surprise:
packages/cli/tsconfig.json +14 / -5 (tsconfig fix)
packages/studio/src/captions/generator.ts +2 / -2 (caption escape fix — NOT in PR body)
packages/studio/src/components/editor/LayersPanel.tsx +295/ 0 (status: ADDED — NOT in PR body)
packages/studio/src/hooks/useFrameCapture.ts +1 / -1 (ObjectURL revoke fix)
packages/studio/tsconfig.json +22 / -7 (tsconfig fix)
The LayersPanel.tsx addition (status: added) is the same defect as #793/#794 — the file already exists on main, so on rebase the merge either conflicts or silently clobbers the existing panel, losing every change committed to it since the branch point.
The generator.ts change is also unannounced in the body — it's the same caption-escaping fix as #625 (already approved) and #794 (also problematic for the same LayersPanel reason).
Blocker — every individual fix in this PR has a competing single-purpose PR
| Concern in this PR | Competing PR | Status |
|---|---|---|
ObjectURL revoke 0ms→1000ms (useFrameCapture.ts:1) |
#622 (hobostay) | Already APPROVED by @jrusso1020 |
Caption JSON.stringify (generator.ts:1) |
#625 (hobostay) | Already APPROVED by @jrusso1020 |
| TS 7.0 deprecation warnings (both tsconfig.json) | #472 (roiizchak) | Already APPROVED by @jrusso1020 |
LayersPanel.tsx (the 295-line new-file dupe) |
#792 (func25) | Open, single-purpose, CI green, correct shape |
Every line of this PR is shipped (and reviewed) better elsewhere.
Strengths
For completeness — the individual one-line fixes are correct in isolation:
- ObjectURL revoke timing is the right call (
setTimeout(..., 0)fires beforelink.click()initiates the download); 1000ms is conservative-safe. - Caption
JSON.stringifycorrectly handles newlines + line separators + all special chars that break manual escape regex. ignoreDeprecations: "5.0"is the canonical TS5-accepted value (TS rejects"6.0"until 5.10+).
None of these strengths change the "close this PR, merge the singles" conclusion.
Recommendation
Close this PR. Merge the four single-purpose PRs (#622, #625, #472, #792). Each has a focused diff, clear ownership, and (for the three hobostay ones + #472) already-approved status. Bundling four unrelated fixes — three of which duplicate already-approved PRs and one of which adds a broken duplicate file — is a strict regression in reviewability.
Verdict
Verdict: REQUEST CHANGES
Reasoning: Diff bundles four unrelated fixes (only two announced in the body), all of which have single-purpose competing PRs already approved or correctly shaped; plus a LayersPanel.tsx new-file addition that will clobber the existing panel on merge. Recommend closing in favor of #622, #625, #472, #792.
— Vai
Summary
Two unrelated fixes bundled in one PR (both low-risk, same package):
1. ObjectURL revocation timing (#622)
packages/studio/src/hooks/useFrameCapture.ts—setTimeout(..., 0)fires before the browser initiates the download, causing empty/failed frame captures. Increased delay to1000msto give the browser time to read the blob before revocation.2. TypeScript 7.0 deprecation warnings (#472)
packages/cli/tsconfig.json— AddedignoreDeprecations: "5.0"androotDir: ".."to silencebaseUrldeprecation and "common source directory" warnings.packages/studio/tsconfig.json— AddedignoreDeprecations: "5.0"to silencebaseUrldeprecation warning.Closes #622
Closes #472