Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
4ea0147
feat(cli): search the catalog by meaning, in three named tiers
miguel-heygen Aug 7, 2026
5e5e309
fix(cli): make this branch pass the repo's own gates
miguel-heygen Aug 7, 2026
0b533c5
feat(cli): ship the local search tiers only, drop the hosted one
miguel-heygen Aug 7, 2026
7a1553f
feat(registry): add the video-primitive moves, and rebuild the catalo…
miguel-heygen Aug 7, 2026
bdf0dda
docs(catalog): publish the primitive and component pages
miguel-heygen Aug 7, 2026
9b6d4ba
docs: list the primitive and component pages in the site navigation
miguel-heygen Aug 7, 2026
fb5c1a9
fix(registry): restore what the port took from main's components
miguel-heygen Aug 7, 2026
2834a5d
docs(catalog): play the real composition, and show what can be changed
miguel-heygen Aug 7, 2026
f7e2b75
docs(catalog): put the code on the page
miguel-heygen Aug 7, 2026
2a81661
feat(registry): give 55 primitives variables that actually do something
miguel-heygen Aug 7, 2026
edb9fb0
feat(registry): variables for 16 more primitives, and stop the snippe…
miguel-heygen Aug 7, 2026
1f86688
feat(registry): variables for 21 more primitives
miguel-heygen Aug 7, 2026
955dc97
fix: regenerate the skills manifest for the edited skills
miguel-heygen Aug 7, 2026
4f8a68b
feat(registry): variables for 4 more primitives, and make manifests a…
miguel-heygen Aug 7, 2026
65b6a08
feat(registry): variables for 4 more primitives
miguel-heygen Aug 7, 2026
8feadbd
refactor(registry): drop the UI primitives, this is a video catalog
miguel-heygen Aug 7, 2026
0e22d15
feat(registry): every motion and transition primitive is now customis…
miguel-heygen Aug 7, 2026
9a46234
feat(registry): raise the catalog quality bar, and add eight primitives
miguel-heygen Aug 9, 2026
864dfc6
fix(registry): let the split-flap board finish flipping on screen
miguel-heygen Aug 9, 2026
36fb3f7
fix(registry): keep the thread-message-stack payload parseable
miguel-heygen Aug 9, 2026
94fda32
fix(registry): close the apostrophe that truncated a variables declar…
miguel-heygen Aug 9, 2026
382354c
fix(registry): make the review findings real fixes
miguel-heygen Aug 9, 2026
a00a4ab
fix(registry): stop shipping a stale copy of the catalog-search work
miguel-heygen Aug 9, 2026
1106b83
refactor(scripts): split the page builder into its numbered sections
miguel-heygen Aug 9, 2026
5e7deaf
fix(cli): repair what the cross-branch file take broke
miguel-heygen Aug 10, 2026
0e53704
fix(ci): resolve core from source and take only item directories
miguel-heygen Aug 10, 2026
33cddff
refactor(registry): load gsap from the cdn like every other item
miguel-heygen Aug 10, 2026
f6fe3a6
feat(registry): swap in the detailed device models
miguel-heygen Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 6 additions & 2 deletions .github/workflows/catalog-previews.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,13 @@ jobs:
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
run: |
# Find which blocks/components changed in this PR
# Find which blocks/components changed in this PR. The trailing slash
# in the grep matters: an item is a directory, and a file sitting
# directly under registry/components (CATALOG.md) does not match the
# sed, so without it the whole path survives and is passed to the
# renderer as if it were an item name.
CHANGED_ITEMS=$(git diff --name-only --diff-filter=ACMR "$BASE_SHA"...HEAD -- registry/blocks/ registry/components/ \
| grep -E '^registry/(blocks|components)/' \
| grep -E '^registry/(blocks|components)/[^/]+/' \
| sed 's|^registry/[^/]*/\([^/]*\)/.*|\1|' \
| sort -u)

Expand Down
26 changes: 25 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ jobs:
code: ${{ steps.filter.outputs.code }}
cli: ${{ steps.filter.outputs.cli }}
skills: ${{ steps.filter.outputs.skills }}
catalog_index: ${{ steps.filter.outputs.catalog_index }}
codex_plugin: ${{ steps.filter.outputs.codex_plugin }}
gcp_beginframe: ${{ steps.filter.outputs.gcp_beginframe }}
studio: ${{ steps.filter.outputs.studio }}
Expand All @@ -49,6 +50,10 @@ jobs:
with:
token: ""
filters: |
catalog_index:
- "registry/registry.json"
- "registry/catalog-artifact/**"
- "scripts/catalog/check-artifact-coverage.ts"
code:
- "packages/**"
- "scripts/**"
Expand Down Expand Up @@ -259,6 +264,7 @@ jobs:
- run: bash scripts/ci/install-workspace-dependencies.sh
- run: bun run build
- run: bun run --filter '*' typecheck
- run: bun run typecheck:scripts

test:
name: Test
Expand All @@ -284,10 +290,13 @@ jobs:
node-version: 22
- uses: ./.github/actions/prepare-ffmpeg-bin
- run: bash scripts/ci/install-workspace-dependencies.sh
- run: bun run test:scripts
- run: bun run --filter '@hyperframes/{parsers,lint,studio-server}' build
- run: bun run --cwd packages/core build
- run: bun run --cwd packages/core build:hyperframes-runtime
# After the builds: the preview scripts drive the producer, which imports
# @hyperframes/core from dist, so running these first fails on a missing
# module rather than on anything the test is actually checking.
- run: bun run test:scripts
- run: bun run --filter '!@hyperframes/producer' test

producer-source-tests:
Expand Down Expand Up @@ -359,6 +368,21 @@ jobs:
# `gen:skills-manifest --check`, which compares per-skill content hashes; the
# manifest carries no version/timestamp, so it only fails on real content
# drift. bun runs the TS script directly, no install needed.
catalog-index-coverage:
name: "Catalog: search index covers the registry"
needs: changes
if: needs.changes.outputs.catalog_index == 'true'
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
# Comparing two name lists needs neither the embedding model nor a
# network call, so this stays a seconds-long gate. Regenerating the
# vectors does need the model, which is why CI checks rather than fixes.
- name: Verify every searchable registry item has a vector
run: bun scripts/catalog/check-artifact-coverage.ts

skills-manifest:
name: "Skills: manifest in sync"
needs: changes
Expand Down
4 changes: 4 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"node_modules/",
"playground/",
"packages/producer/tests/**/src/vendor/**",
"docs/public/catalog/",
"registry/blocks/**/lib/*.iife.js",
"chrome/"
],
Expand All @@ -34,6 +35,9 @@
},
{
"files": ["docs/snippets/**/*.jsx", "docs/snippets/**/*.tsx"],
"globals": {
"CodeBlock": "readonly"
},
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
Expand Down
27 changes: 14 additions & 13 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading