Skip to content

ReactOmega 1.1.0 "Surfaces" — 20 new components (31 → 51) + a raw-WebGL2 primitive - #1

Merged
Edwson merged 13 commits into
mainfrom
Edwson-patch-1
Jul 28, 2026
Merged

ReactOmega 1.1.0 "Surfaces" — 20 new components (31 → 51) + a raw-WebGL2 primitive#1
Edwson merged 13 commits into
mainfrom
Edwson-patch-1

Conversation

@Edwson

@Edwson Edwson commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Adds the four surfaces the registry was missing: light on a material, the pointer itself, the page as it scrolls, and richer UI.

useShader() — raw WebGL2, still zero runtime dependencies

No ogl, no three. Draws one full-screen triangle from gl_VertexID (nothing to allocate, nothing to leak) and owns the whole lifecycle: DPR-clamped sizing, an IntersectionObserver that suspends the loop off-screen, pause on tab blur, context-loss recovery, eased pointer input, uniform declarations generated from the values passed in, and a single still frame for reduced-motion users. Reports supported: false when WebGL2 is missing so components fall back to CSS instead of a blank box.

New components (20)

  • Shaders & Light (6)liquid-metal, thin-film, caustics, halftone-gradient, volumetric-rays, curl-flow
  • Cursor & Pointer (5)inertia-cursor, elastic-cursor, image-trail, pixel-trail, crosshair
  • Scroll-Driven (4)scroll-stack, scroll-velocity, parallax-layers, scroll-scene
  • Components (5)card-swap, gooey-nav, bento-grid, elastic-slider, circular-gallery

Changed

  • BentoGrid gains rowHeight, CardSwap gains minHeight — both previously hardcoded a floor height that made them unusable in a smaller frame.
  • The reduced-motion test is now transitive: a component satisfies the contract directly or through a primitive that does, so the shaders inherit the guarantee from useShader rather than restating it.
  • The playground gives scroll-driven components a full-height section; a 200px preview tile cannot demonstrate a page-scroll-driven effect.

Fixed

  • CLI list iterated a hardcoded array of four categories, silently omitting every component in a newer one. The CLI and MCP server now derive the category set from the registry.
  • The MCP integration test asserted a literal component count, which breaks on every addition. Expected counts now come from registry/meta.json.

Verification

Registry and MCP suites pass, tsc clean, next build static export prerenders every page, all six shaders compile under glslangValidator against the exact prelude the hook generates, and every demo was rendered and inspected in headless Chromium — in both next dev (StrictMode) and a production build.

@Edwson
Edwson merged commit 9007d89 into main Jul 28, 2026
3 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.

1 participant