mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-08-31 10:46:57 +00:00
* fix(scripts): render template-only blocks in catalog previews The catalog preview renderer treated any file containing `__timelines` as a standalone composition and rendered it as index.html directly. The 12 VS Code snippet blocks register their timeline inside a `<template>`, which stays inert until a host mounts it, so every one of them failed with "Composition has zero duration" and no preview could be produced from the registry at all. Six of the previews on the docs CDN were hand-made from a project still mounting Monokai, so Dark+, High Contrast, High Contrast Light, Solarized Light, Visual Studio Dark and Visual Studio Light all showed Monokai's video. Detect standalone-ness on the document with template content stripped, mount the mirrored install-layout copy so a block's own `../assets/*` references resolve, and capture posters opaque: `format: "png"` is the engine's transparent mode and forces `background-image: none` on every composition root, which erased the desktop backdrop these blocks paint. Publishing gets the missing half too: preview URLs are stable and the objects are uploaded `immutable` with a one-year max-age, so a re-upload alone never reaches a reader. * fix(scripts): install ffmpeg in the preview job and fix the sibling renderer The canary this PR added caught its own regression: the poster transcode shells out to ffmpeg, which ubuntu-latest does not ship and this job never needed, so both canaries failed with `spawnSync ffmpeg ENOENT`. Install it the way every other render job does. `encodeForWeb` has always shelled out to the same binary; the job only got away with it because `--skip-video` skipped that path. generate-template-previews.ts captures posters through the same transparent `format: "png"` mode, so any template painting its own backdrop loses it exactly as the code snippets did. Fixing one renderer and leaving its sibling on the broken call would just move the bug. Also fold the three separate parses of registry-item.json into one read: they had drifted into three different failure behaviours for the same file.
45 lines
1.8 KiB
Bash
Executable File
45 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Upload docs/images/ to the HeyGen public CDN.
|
|
#
|
|
# Docs previews (mp4/png/gif) are served from https://static.heygen.ai/hyperframes-oss/docs/images/
|
|
# rather than committed to the repo. After regenerating previews with
|
|
# `scripts/generate-catalog-previews.ts` or `scripts/generate-template-previews.ts`,
|
|
# run this script to publish the new files.
|
|
#
|
|
# Requires AWS credentials for the heygen engineering account (profile: engineering-767398024897)
|
|
# with both s3:PutObject and cloudfront:CreateInvalidation — the sync alone does
|
|
# not reach a reader, see the invalidation step below.
|
|
# Contributors without AWS access: open a PR with the HTML/MDX changes and a
|
|
# maintainer will run the generators + this upload before merging.
|
|
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
SRC="$REPO_ROOT/docs/images/"
|
|
DEST="s3://heygen-public/hyperframes-oss/docs/images/"
|
|
PROFILE="${AWS_PROFILE:-engineering-767398024897}"
|
|
|
|
if [ ! -d "$SRC" ]; then
|
|
echo "No docs/images/ directory to upload — nothing to do."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Uploading $SRC → $DEST (profile: $PROFILE)"
|
|
aws --profile "$PROFILE" s3 sync "$SRC" "$DEST" \
|
|
--cache-control "public, max-age=31536000, immutable" \
|
|
--metadata-directive REPLACE
|
|
|
|
# Preview URLs are stable, and the objects go up `immutable` with a one-year
|
|
# max-age, so a re-upload alone changes nothing a reader sees: the edge keeps
|
|
# serving the old file until the TTL expires. Republishing a corrected preview
|
|
# is not done until the cache is dropped.
|
|
DISTRIBUTION="${DOCS_CDN_DISTRIBUTION_ID:-E2BSLVSZ7FG3U0}"
|
|
echo "Invalidating $DISTRIBUTION"
|
|
aws --profile "$PROFILE" cloudfront create-invalidation \
|
|
--distribution-id "$DISTRIBUTION" \
|
|
--paths "/hyperframes-oss/docs/images/*" \
|
|
--query "Invalidation.Id" --output text
|
|
|
|
echo "Done. Files are live at https://static.heygen.ai/hyperframes-oss/docs/images/"
|