Skip to content

feat(registry): seed transition blocks — 14 shader + 14 CSS showcase#270

Merged
jrusso1020 merged 13 commits into
mainfrom
04-14-feat_registry_seed_transition_blocks_14_shader_14_css_showcase
Apr 14, 2026
Merged

feat(registry): seed transition blocks — 14 shader + 14 CSS showcase#270
jrusso1020 merged 13 commits into
mainfrom
04-14-feat_registry_seed_transition_blocks_14_shader_14_css_showcase

Conversation

@jrusso1020

@jrusso1020 jrusso1020 commented Apr 14, 2026

Copy link
Copy Markdown
Collaborator

What

Add 28 transition blocks from the Hyperframe Template Structure catalog, bringing the registry to 53 total items.

Shader transitions (14 blocks, WebGL, 4s each)

domain-warp-dissolve, ridged-burn, whip-pan, sdf-iris, ripple-waves, gravitational-lens, cinematic-zoom, chromatic-radial-split, glitch, swirl-vortex, thermal-distortion, flash-through-white, cross-warp-morph, light-leak

CSS transition showcases (14 blocks, various durations)

transitions-3d, transitions-blur, transitions-cover, transitions-destruction, transitions-dissolve, transitions-distortion, transitions-grid, transitions-light, transitions-mechanical, transitions-other, transitions-push, transitions-radial, transitions-scale, transitions-shader

Why

Phase D content accumulation. Transitions are the most-requested category for the catalog.

How

  • Shader transitions extracted from shader-showcase.zip, each a standalone HTML with WebGL shaders
  • CSS transitions extracted from showcase-bundle.zip, each a standalone showcase page
  • All tagged with transition + shader or showcase for catalog grouping
  • Preview thumbnails generated for all 28 blocks
  • Catalog pages + index regenerated

Test plan

  • All 28 blocks produce preview thumbnails
  • registry-item.json validates for all blocks
  • Catalog pages generated (45 total items in catalog-index.json)
  • oxfmt --check passes

@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: 28 Transition Blocks (14 Shader + 14 CSS Showcase)

Spot-checked 3 shader blocks (gravitational-lens, glitch, domain-warp-dissolve) and 3 CSS blocks (transitions-3d, transitions-blur, transitions-destruction). Also verified all 28 registry-item.json files and catalog-index.json for consistency.

What looks good

Shader blocks are well-structured and safe:

  • All shaders use fixed-iteration loops only (for(int i=0;i<5;i++), for(int i=0;i<12;i++)) -- no dynamic loop bounds, no GPU hang risk.
  • Proper WebGL context setup: preserveDrawingBuffer: true on all 14 shader blocks, CLAMP_TO_EDGE texture wrapping, LINEAR filtering, proper viewport/pixelStorei configuration.
  • Graceful fallback: every shader block checks if (!gl) and falls back to an empty paused timeline, so headless Chrome without GPU won't crash.
  • Fragment shaders use precision mediump float -- good choice for compatibility and performance in headless rendering.

Timeline registration is correct everywhere:

  • All 28 blocks register window.__timelines["main"] = tl (or the fallback empty timeline for WebGL failures).
  • All use gsap.timeline({ paused: true }) as required for the HyperFrames runtime to seek.

Registry consistency is solid:

  • All 28 registry-item.json files follow the same schema with $schema, name, type: "hyperframes:block", matching tags, dimensions: 1920x1080, and correct file targets.
  • All 14 shader blocks have duration: 4 and tags ["transition", "shader"].
  • All 14 CSS showcase blocks have tags ["transition", "showcase"] with varying durations (11-55s) matching their content.
  • catalog-index.json entries are alphabetically sorted and use "type": "block" (matching existing convention vs. "hyperframes:block" in registry-item.json).
  • docs.json page list is alphabetically ordered.
  • All 28 HTML files have <!doctype html>, all use data-composition-id="main".
  • Only external dependency is GSAP CDN ([email protected]) -- consistent across all 28 blocks. Google Fonts used in shader blocks only (consistent with the blueprint panel design).

Shader code quality:

  • domain-warp-dissolve: properly implements cascaded FBM with 5-octave noise, rotation matrix for lacunarity, and cosine color palette for edge glow. No issues.
  • gravitational-lens: warp strength scales with inverse distance +0.1 denominator prevents division by zero. Chromatic aberration shift is bounded. Event horizon darkening uses smoothstep. Clean.
  • glitch: scanline + block scramble + chromatic aberration all driven by deterministic rand() seeded from u_progress (not time) -- important for deterministic frame-by-frame rendering. Good.
  • chromatic-radial-split: simple radial RGB channel separation, clean mix.

CSS blocks are clean:

  • transitions-blur uses GSAP filter animations (blur, skew, scale) -- all hardware-accelerated-friendly properties.
  • transitions-destruction uses a 2D canvas for the page-burn effect with procedural noise and radial gradient -- creative approach that avoids WebGL while still being visually interesting.
  • transitions-3d properly uses perspective: 1200px and rotationY for the card flip.

Minor notes (non-blocking)

  1. Inconsistent <title> tags: 6 of the 14 CSS showcase blocks have <title> elements, the other 8 (and all 14 shader blocks) do not. Not functional but worth noting for consistency if more blocks are added later.

  2. Inconsistent <meta name="viewport"> tags: All 14 CSS blocks have <meta name="viewport" content="width=1920"> but none of the 14 shader blocks do. Again, probably doesn't matter for headless rendering, but could be unified.

  3. Shader boilerplate duplication: The captureScene() function, vertex shader, compileShader(), mkProg(), renderShader(), easeInOut(), and the timeline timing logic (1s hold, 2s transition, 1s hold) are identical across all 14 shader blocks. Not a problem for this PR, but if more shader transitions are added, extracting a shared shader-transition-base.js utility could reduce the per-block size from ~365 lines to ~50 lines of unique code.

  4. transitions-shader tagging: This block is tagged ["transition", "showcase"] even though it contains WebGL shader code. The tagging is technically correct (it's a showcase of shader transitions), but worth noting the naming overlap with the shader tag used by the standalone shader blocks.

All checks pass (Format, Render catalog previews, Validate docs, Semantic PR title). LGTM.

@jrusso1020
jrusso1020 force-pushed the 04-14-feat_registry_seed_transition_blocks_14_shader_14_css_showcase branch from de9178c to 0f830a2 Compare April 14, 2026 19:38

@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.

Nice cleanup — fixes CI workflow, removes broken blocks, updates docs. Good to merge.

@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
jrusso1020 force-pushed the 04-14-feat_registry_seed_transition_blocks_14_shader_14_css_showcase branch from 82ea236 to 71c346d 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:31 PM UTC: Graphite rebased this pull request as part of a merge.
  • Apr 14, 11:32 PM UTC: @jrusso1020 merged this pull request with Graphite.

@jrusso1020
jrusso1020 changed the base branch from 04-14-feat_registry_seed_blocks_batch_social_overlays_data_viz_showcases to graphite-base/270 April 14, 2026 23:28
@jrusso1020
jrusso1020 changed the base branch from graphite-base/270 to main April 14, 2026 23:29
Add 28 transition blocks from the Hyperframe Template Structure catalog:

Shader transitions (WebGL, 4s each):
domain-warp-dissolve, ridged-burn, whip-pan, sdf-iris, ripple-waves,
gravitational-lens, cinematic-zoom, chromatic-radial-split, glitch,
swirl-vortex, thermal-distortion, flash-through-white, cross-warp-morph,
light-leak

CSS transition showcases:
transitions-3d, transitions-blur, transitions-cover, transitions-destruction,
transitions-dissolve, transitions-distortion, transitions-grid, transitions-light,
transitions-mechanical, transitions-other, transitions-push, transitions-radial,
transitions-scale, transitions-shader

Registry now has 53 total items (42 blocks + 3 components + 8 examples).
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.
- Namespace @Keyframes grain-noise -> hf-grain-noise (avoids collision with warm-grain example)
- Add ordering note to shimmer-sweep snippet (must appear after target elements)
- Scope grid-pixelate-wipe timeline example to #grid-pixelate-overlay .grid-cell
- Scope CSS in all 7 social overlay blocks under [data-composition-id] prefix
- Social overlay blocks now render directly as index.html (not via sub-composition
  wrapper) with dark background injected for transparent overlays
- Fix Three.js CDN version in ascii-dashboard (0.171.0 removed three.min.js,
  use 0.160.0 which has the non-module build)
- Simplify preview wrapper: standalone blocks with __timelines skip the
  sub-composition wrapper entirely, rendering exactly as authored
…GBColorSpace API)

The ascii-dashboard block renders faintly in headless Chrome due to
SwiftShader software WebGL producing dim output for the 3D-to-ASCII
pipeline. Works correctly in a real browser with GPU acceleration.
- Catalog tab now appears right after Documentation (before Packages)
- Added CardGroup banner on introduction page with 'Browse the Catalog'
  and 'Quick Start' cards to drive discovery
…t bg)

Addresses Vance's review: subtitle had ~1.4:1 contrast ratio on #faf9f6
background, making it effectively invisible. Now uses #666 to match the
key-text color.
@jrusso1020
jrusso1020 force-pushed the 04-14-feat_registry_seed_transition_blocks_14_shader_14_css_showcase branch from 71c346d to d7216eb Compare April 14, 2026 23:30
@jrusso1020
jrusso1020 merged commit 9943091 into main Apr 14, 2026
15 of 16 checks passed
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