mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-11-01 19:26:52 +00:00
* feat(scripts): fail a PR whose After capture is a Before capture The captures check now downloads each Before and After asset in the PR body and fails when any After asset has the same content hash as a Before asset, or when an asset cannot be downloaded. A Before clip attached under After passed the old check because it only looked for media, not for what the media was. * refactor(scripts): return the hashed captures directly * fix(scripts): the capture hash check only fetches GitHub attachments The check fetched any URL a PR body named and followed redirects, so a body could make the runner request an internal host. It now downloads only github.com/user-attachments assets and follows redirects only to GitHub and its signed storage. A 429, 5xx or network error is retried with backoff, other statuses fail at once, and unreadable assets and identical assets are reported under separate headings. * fix(scripts): cap capture downloads, match GitHub's asset bucket, pass forks through The redirect allowlist now names GitHub's asset bucket instead of all of amazonaws.com. Each asset and the whole check are capped in bytes while streaming. A fork PR whose capture cannot be downloaded is skipped with a named reason, never failed. * fix(scripts): one download deadline, https only, same link caught before fetching Reviewer findings on the capture hash check: - each asset gets one deadline across its retries - downloads run one at a time so a large asset cannot starve a sibling - a link under both headings is reported without a download - a read error is no longer reported as a download failure - the CLI fork skip and exit code are tested through a preloaded fetch * fix(scripts): a byte-cap refusal blocks even on a fork, retries refund their bytes - our own cap tripping is reported apart from an unreadable download and always fails - a failed attempt gives its bytes back to the shared budget - trailing punctuation and query strings no longer change which asset a link names - more than 12 capture links is refused, and the job timeout is raised to fit * fix(scripts): strip markdown wrappers from capture links, count shared links once The twelve-link limit is tested at its edge. * refactor(scripts): split the capture download code into small functions Fallow scored the download, redirect and reporting functions as untested because the scripts suite runs under node --test. Each function is now small enough to pass without coverage. Links the duplicate check cannot compare are now named: an http attachment link is refused, other media links are listed. * fix(scripts): compare links by identity, name the refusal, pin three behaviours An explicit port or upper-case host no longer reads as an uncomparable link.