Skip to content

feat(registry): seed blocks batch — social overlays, data viz, showcases#269

Merged
jrusso1020 merged 1 commit into
mainfrom
04-14-feat_registry_seed_blocks_batch_social_overlays_data_viz_showcases
Apr 14, 2026
Merged

feat(registry): seed blocks batch — social overlays, data viz, showcases#269
jrusso1020 merged 1 commit into
mainfrom
04-14-feat_registry_seed_blocks_batch_social_overlays_data_viz_showcases

Conversation

@jrusso1020

@jrusso1020 jrusso1020 commented Apr 14, 2026

Copy link
Copy Markdown
Collaborator

What

Add 11 blocks from the Hyperframe Template Structure catalog, bringing the registry to 25 total items.

Social overlays

Block Dimensions Duration Description
instagram-follow 1080×1920 4.5s Instagram follow overlay with profile card
tiktok-follow 1080×1920 4.5s TikTok follow overlay with profile card
yt-lower-third 1920×1080 4.5s YouTube subscribe lower third
x-post 1920×1080 5s X/Twitter post card with engagement
reddit-post 1920×1080 5s Reddit post card with upvotes
spotify-card 1080×1920 5s Spotify now-playing card
macos-notification 1920×1080 5s macOS notification banner

Data & visualization

Block Duration Description
ascii-dashboard 10s Retro terminal-style data viz
ascii-lightning 9s ASCII art lightning bolt animation

Showcases

Block Duration Description
app-showcase 5.5s Floating smartphone screens
ui-3d-reveal 13s Perspective 3D UI reveal

Why

Phase D content accumulation. The registry pipeline (PRs 6-10) is in place — this PR exercises it at scale.

How

  • Extracted from zip files in the Hyperframe Template Structure Notion doc
  • Social overlays: single-file standalone HTML, copied directly
  • Multi-file blocks (ascii-*, app-showcase, ui-3d-reveal): converted <template> sub-compositions to standalone HTML with proper <!doctype> wrappers
  • All previews (PNG + MP4) rendered locally via generate-catalog-previews.ts
  • Catalog MDX pages regenerated via generate-catalog-pages.ts
  • docs.json updated with new catalog entries

Test plan

  • All 11 blocks render to PNG + MP4 without errors
  • Catalog pages generated for all 17 items (14 blocks + 3 components)
  • registry-item.json files have correct dimensions, duration, tags
  • oxfmt --check passes on all files

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: Registry Seed Blocks Batch

Good batch of content. The 11 blocks are well-structured, consistently formatted, and the PR description is thorough. A few issues to address before merging.


Critical (must fix)

1. ascii-dashboard has a broken local dependency on Three.js

ascii-dashboard.html line 8 (inside the <body> style/script section):

<script src="../three.min.js"></script>

This is a relative path to a three.min.js that doesn't exist in the registry block directory or anywhere in the block's files array. The registry-item.json only lists ascii-dashboard.html as a file — no Three.js bundled. After hyperframes add ascii-dashboard, the user gets a composition that immediately fails because THREE is undefined.

Options:

  • A) Use a CDN like the GSAP scripts: <script src="https://cdn.jsdelivr.net/npm/[email protected]/build/three.min.js"></script> (or whatever version was used)
  • B) Add three.min.js as a hyperframes:asset in the files array and include the file in the block directory

Option A is simpler and consistent with how GSAP is handled. This block will not render without it.


Important (should fix)

2. Composition ID mismatches between data-composition-id and __timelines key

Several blocks use a data-composition-id that doesn't match the block's name in registry-item.json. When these blocks are composed into a host composition via data-composition-src, the HyperFrames engine resolves timelines by the data-composition-id value. This isn't a bug if the engine uses whatever ID is in the HTML, but it's inconsistent naming that will confuse users:

Block name data-composition-id __timelines key
instagram-follow instagram-follow-overlay instagram-follow-overlay
tiktok-follow tiktok-follow-overlay tiktok-follow-overlay
x-post x-post-overlay x-post-overlay
reddit-post reddit-post-overlay reddit-post-overlay
spotify-card spotify-now-playing spotify-now-playing
app-showcase scene-3-phones scene-3-phones

The convention from existing blocks (e.g., data-chart, flowchart, logo-outro) is that data-composition-id matches the block name. The social overlays append -overlay, spotify uses a completely different name (spotify-now-playing), and app-showcase uses scene-3-phones.

The catalog MDX usage snippets reference the block name (e.g., data-composition-id="app-showcase" in the install docs), but the actual HTML uses a different ID. This means the install instructions are wrong — they show data-composition-id="app-showcase" but the HTML file uses scene-3-phones.

Recommendation: Either rename the IDs to match the block names, or make the catalog generator aware of the actual IDs used in the HTML. The former is cleaner.

3. CSS scoping inconsistency

The blocks use two different scoping strategies:

  • Scoped (good): app-showcase, ascii-dashboard, ascii-lightning, ui-3d-reveal — all CSS selectors are prefixed with [data-composition-id="..."]
  • Unscoped (problematic): instagram-follow, tiktok-follow, yt-lower-third, x-post, reddit-post, spotify-card, macos-notification — all CSS uses bare class names (.lower-third, .avatar, .card, .x-card, etc.)

The unscoped blocks will have CSS collisions when composed into a host document that has its own .avatar, .card, or other common class names. The social overlays are overlays meant to be layered on top of other content, so collision is virtually guaranteed.

Since these are single-file standalone compositions loaded via iframe/sub-composition, the scoping may not matter at runtime (each gets its own document). But it's inconsistent with the showcase blocks that do scope everything. Worth normalizing for the sake of setting the right pattern for future blocks.


Suggestions (nice to have)

4. ascii-lightning canvas selector uses a bare ID

#al-canvas {
  position: absolute;
  ...
}

While ascii-dashboard scopes with [data-composition-id="ascii-dashboard"], ascii-lightning uses #al-canvas directly. Minor since IDs are unique per document, but inconsistent with the sibling block.

5. Reddit uses a DM Sans font but the real Reddit UI uses IBM Plex Sans / Noto Sans

The Reddit post card uses font-family: "DM Sans". Real Reddit uses a different font stack. Not a blocker since these are stylized overlays, but if authenticity is a goal, worth noting.

6. Font loading: display=block vs display=swap

All blocks use display=block for Google Fonts, which is correct for video rendering (avoids FOUT). Good pattern.


What's done well

  • All 11 registry-item.json files follow the established schema exactly — correct $schema, type, dimensions, duration, files array, tags. Consistent with existing data-chart pattern.
  • registry.json additions are correct — 11 new hyperframes:block entries appended after existing items.
  • docs.json page entries are alphabetically sorted within the Blocks group.
  • catalog-index.json entries are alphabetically sorted with correct href and preview paths.
  • All 11 MDX catalog pages follow identical structure with install command, details table, files table, and usage snippet.
  • Every block has both PNG and MP4 preview assets.
  • GSAP CDN version is consistently 3.14.2 across all blocks.
  • All HTML files start with <!doctype html> and include <html lang="en">, <meta charset="UTF-8" />.
  • The social overlays have nice micro-interactions (button press-in with elastic bounce, color transitions on follow/like/subscribe).
  • ui-3d-reveal is an impressive 2905-line composition with full Figma logo stroke-draw animation, perspective UI card reveal, and outro — properly scoped with [data-composition-id="ui-3d-reveal"] throughout.

Summary: Fix the Three.js dependency in ascii-dashboard (critical — block won't render). The composition ID mismatches and CSS scoping inconsistency are worth fixing now to set the right convention for the registry, but aren't strictly blocking if there's urgency to land.

jrusso1020 added a commit that referenced this pull request Apr 14, 2026
PR #259: Scope all GSAP JS selectors in flowchart.html under
[data-composition-id="flowchart"] prefix. Remove unnecessary setTimeout
retry in data-chart.html.

PR #261: Replace 'iframe' text with 'sub-composition' / 'data-composition-src'
in SKILL.md description + body, CLAUDE.md skills table + rules. Add
data-composition-id to missing-attributes note in snippet guidance.

PR #262: Fix CI workflow — replace grep -P lookbehind with sed (PCRE
variable-length alternation fails on Ubuntu), use fetch-depth: 0 + base
SHA for diff, remove continue-on-error: true, add per-item timeout, reduce
artifact retention to 7 days. Fix doc comment to remove stale 'examples' reference.

PR #263: Add try/catch around JSON.parse in codegen discovery (prevents
partial wipe on malformed manifest). Guard docs.json tabs array existence.

PR #269: Fix Three.js CDN in ascii-dashboard (was broken relative path).
Fix composition ID mismatches in 6 blocks (instagram-follow, tiktok-follow,
x-post, reddit-post, spotify-card, app-showcase) — IDs now match block names.

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good batch. Broken ascii blocks removed in #270. Social overlay CSS scoping can be tightened in a follow-up.

@jrusso1020
jrusso1020 force-pushed the 04-14-feat_registry_seed_blocks_batch_social_overlays_data_viz_showcases branch from 59df316 to 912e058 Compare April 14, 2026 23:14
jrusso1020 added a commit that referenced this pull request Apr 14, 2026
PR #259: Scope all GSAP JS selectors in flowchart.html under
[data-composition-id="flowchart"] prefix. Remove unnecessary setTimeout
retry in data-chart.html.

PR #261: Replace 'iframe' text with 'sub-composition' / 'data-composition-src'
in SKILL.md description + body, CLAUDE.md skills table + rules. Add
data-composition-id to missing-attributes note in snippet guidance.

PR #262: Fix CI workflow — replace grep -P lookbehind with sed (PCRE
variable-length alternation fails on Ubuntu), use fetch-depth: 0 + base
SHA for diff, remove continue-on-error: true, add per-item timeout, reduce
artifact retention to 7 days. Fix doc comment to remove stale 'examples' reference.

PR #263: Add try/catch around JSON.parse in codegen discovery (prevents
partial wipe on malformed manifest). Guard docs.json tabs array existence.

PR #269: Fix Three.js CDN in ascii-dashboard (was broken relative path).
Fix composition ID mismatches in 6 blocks (instagram-follow, tiktok-follow,
x-post, reddit-post, spotify-card, app-showcase) — IDs now match block names.
@jrusso1020
jrusso1020 force-pushed the 04-14-feat_skills_hyperframes-registry_skill branch from f711805 to 630b5ab Compare April 14, 2026 23:14

jrusso1020 commented Apr 14, 2026

Copy link
Copy Markdown
Collaborator Author

Merge activity

  • Apr 14, 11:16 PM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Apr 14, 11:29 PM UTC: Graphite rebased this pull request as part of a merge.
  • Apr 14, 11:29 PM UTC: @jrusso1020 merged this pull request with Graphite.

@jrusso1020
jrusso1020 changed the base branch from 04-14-feat_skills_hyperframes-registry_skill to graphite-base/269 April 14, 2026 23:25
@jrusso1020
jrusso1020 changed the base branch from graphite-base/269 to main April 14, 2026 23:27
Add 11 blocks from the Hyperframe Template Structure catalog:

Social overlays:
- instagram-follow, tiktok-follow, yt-lower-third
- x-post, reddit-post, spotify-card, macos-notification

Data and visualizations:
- ascii-dashboard, ascii-lightning

Showcases:
- app-showcase, ui-3d-reveal

Each block includes registry-item.json, standalone HTML, rendered preview
(PNG + MP4), and generated catalog MDX page. Registry now has 25 items.
@jrusso1020
jrusso1020 force-pushed the 04-14-feat_registry_seed_blocks_batch_social_overlays_data_viz_showcases branch from 912e058 to e111980 Compare April 14, 2026 23:28
@jrusso1020
jrusso1020 merged commit d37d738 into main Apr 14, 2026
16 checks passed
jrusso1020 added a commit that referenced this pull request Apr 14, 2026
PR #259: Scope all GSAP JS selectors in flowchart.html under
[data-composition-id="flowchart"] prefix. Remove unnecessary setTimeout
retry in data-chart.html.

PR #261: Replace 'iframe' text with 'sub-composition' / 'data-composition-src'
in SKILL.md description + body, CLAUDE.md skills table + rules. Add
data-composition-id to missing-attributes note in snippet guidance.

PR #262: Fix CI workflow — replace grep -P lookbehind with sed (PCRE
variable-length alternation fails on Ubuntu), use fetch-depth: 0 + base
SHA for diff, remove continue-on-error: true, add per-item timeout, reduce
artifact retention to 7 days. Fix doc comment to remove stale 'examples' reference.

PR #263: Add try/catch around JSON.parse in codegen discovery (prevents
partial wipe on malformed manifest). Guard docs.json tabs array existence.

PR #269: Fix Three.js CDN in ascii-dashboard (was broken relative path).
Fix composition ID mismatches in 6 blocks (instagram-follow, tiktok-follow,
x-post, reddit-post, spotify-card, app-showcase) — IDs now match block names.
Zollicoff pushed a commit to Zollicoff/hyperframes that referenced this pull request Jul 1, 2026
PR heygen-com#259: Scope all GSAP JS selectors in flowchart.html under
[data-composition-id="flowchart"] prefix. Remove unnecessary setTimeout
retry in data-chart.html.

PR heygen-com#261: Replace 'iframe' text with 'sub-composition' / 'data-composition-src'
in SKILL.md description + body, CLAUDE.md skills table + rules. Add
data-composition-id to missing-attributes note in snippet guidance.

PR heygen-com#262: Fix CI workflow — replace grep -P lookbehind with sed (PCRE
variable-length alternation fails on Ubuntu), use fetch-depth: 0 + base
SHA for diff, remove continue-on-error: true, add per-item timeout, reduce
artifact retention to 7 days. Fix doc comment to remove stale 'examples' reference.

PR heygen-com#263: Add try/catch around JSON.parse in codegen discovery (prevents
partial wipe on malformed manifest). Guard docs.json tabs array existence.

PR heygen-com#269: Fix Three.js CDN in ascii-dashboard (was broken relative path).
Fix composition ID mismatches in 6 blocks (instagram-follow, tiktok-follow,
x-post, reddit-post, spotify-card, app-showcase) — IDs now match block names.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants