Skip to content

feat(engine,cli): drawElement fast-capture config + CLI flag#1916

Open
vanceingalls wants to merge 1 commit into
mainfrom
de2-01-config-cli
Open

feat(engine,cli): drawElement fast-capture config + CLI flag#1916
vanceingalls wants to merge 1 commit into
mainfrom
de2-01-config-cli

Conversation

@vanceingalls

@vanceingalls vanceingalls commented Jul 4, 2026

Copy link
Copy Markdown
Collaborator

drawElement fast-capture — config + CLI flag (stack 1/6)

Foundation layer for the drawElement fast-capture feature: the config surface and CLI/Docker plumbing that the rest of the stack builds on.

What this adds

  • packages/engine/src/config.ts — new config fields for fast capture: useDrawElement / enableDrawElementWorkerEncode (macOS-GPU drawElementImage capture + worker-offloaded JPEG encode), resolved from env in resolveConfig (env HF_DE_WORKER_ENCODE). Wired alongside main's existing staticFrameDedup (unified downstream in 4/6).
  • packages/cli/src/commands/render.ts--experimental-fast-capture flag → sets experimentalFastCapture; --debug passthrough.
  • packages/cli/src/utils/dockerRunArgs.ts — pass the fast-capture env through to the container.
  • .github/workflows/fast-video-validation.yml — CI job validating fast-capture renders.
  • .oxlintrc.json / .fallowrc.jsonc — ignore-pattern housekeeping for the new paths.

Notes

  • Config-only + entrypoint; no capture behavior yet (that's 2/6–4/6).
  • Tests: config.test.ts, dockerRunArgs.test.ts added.

Stack (drawElement fast-capture, rebased onto current main, supersedes #1295 + #1444):

  1. feat(engine,cli): drawElement fast-capture config + CLI flag #1916 config + CLI ← you are here
  2. feat(engine): drawElementImage capture service #1917 drawElementImage capture service
  3. feat(engine): 3D projection + compositor-effect risk gate #1918 3D projection + compositor-effect risk gate
  4. feat(engine): frame-capture core — fast-capture routing, worker-encode, dedup extension #1919 frame-capture core (routing, worker-encode, static-dedup unification)
  5. feat(producer): fast-capture render stages + remote bg-image localizer #1920 producer render stages + remote bg-image localizer
  6. feat(lint,player): fast-capture lint rule + player media sync #1921 lint rule + player media sync

⚠️ Intermediate PRs (1–5) are split by package boundary for review and do not each compile independently (cross-file deps); the complete feature is green at the stack tip (#1921) — tsc-clean on engine + producer, 231 tests pass.

🤖 Generated with Claude Code

Comment on lines +26 to +52
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3

- name: Build test Docker image (cached)
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
with:
context: .
file: Dockerfile.test
load: true
tags: hyperframes-producer:test
cache-from: type=gha,scope=regression-test-image
cache-to: type=gha,mode=max,scope=regression-test-image

- name: Validate fast-capture video (drawElement + BeginFrame)
run: |
docker run --rm \
--security-opt seccomp=unconfined \
--shm-size=4g \
-e PRODUCER_VALIDATE_COMP='${{ inputs.composition }}' \
-e PRODUCER_VALIDATE_MIN_PSNR='${{ inputs.min_psnr }}' \
--workdir /app/packages/producer \
--entrypoint bunx \
hyperframes-producer:test tsx scripts/validate-fast-video.ts
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