Commit Graph

2959 Commits

Author SHA1 Message Date
Miguel Angel Simon Sierra d0eb2b2104 perf(studio): virtualize timeline rows 2026-07-19 00:16:00 +02:00
Miguel Angel Simon Sierra 38ea7ffa93 perf(studio): centralize timeline viewport geometry 2026-07-19 00:16:00 +02:00
Miguel Angel Simon Sierra 5f0c6de79a refactor(studio): decompose timeline orchestration 2026-07-19 00:06:22 +02:00
Miguel Angel Simon Sierra 128c1a9ad2 refactor(studio): extract timeline render contracts 2026-07-19 00:05:13 +02:00
Miguel Angel Simon Sierra 860b7fddba refactor(studio): isolate clip drag lifecycle 2026-07-19 00:03:59 +02:00
Miguel Angel Simon Sierra 46b8692c5d test(studio): add timeline browser performance gate 2026-07-19 00:02:51 +02:00
Miguel Angel Simon Sierra 046aa7339a test(studio): add timeline performance fixtures 2026-07-19 00:01:42 +02:00
Miguel Angel Simon Sierra a03f772700 perf(studio): define timeline viewport budgets 2026-07-19 00:00:48 +02:00
Miguel Angel Simon Sierra 09a5e14f2e fix(studio): preserve exact keyframe edit intent 2026-07-16 21:19:32 -04:00
Miguel Angel Simon Sierra 49ed3450e0 fix(studio): harden keyframe edit identity 2026-07-16 18:12:14 -04:00
Miguel Angel Simon Sierra d36c4f9308 fix(parsers): preserve authored keyframe intent 2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra b807d95a6c fix(studio): update ease mode optimistically 2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra 9e5966ba0a fix(studio): publish keyframe cache refresh atomically 2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra c1fd7ba5b9 fix(studio): resolve safe keyframe review findings 2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra 63342fc3c3 test(studio): restore hold ease seek coverage 2026-07-16 18:12:13 -04:00
Miguel Angel Simon Sierra 556e0975c5 chore(studio): keep edited modules within size gate 2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra 2158ba08a5 feat(studio): bulk-edit easing for merged keyframes 2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra 3c17c9a8d8 test(studio): cover expanded keyframe timeline 2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra f385e111f0 feat(studio): wire expanded keyframe timeline lanes 2026-07-16 18:12:12 -04:00
Miguel Angel Simon Sierra 4e80941969 refactor(studio): consolidate animation inspector callbacks 2026-07-16 18:12:11 -04:00
Miguel Angel Simon Sierra 179f4c10af feat(studio): add timeline keyframe callbacks 2026-07-16 18:12:11 -04:00
Miguel Angel Simon Sierra f284fb41d5 feat(studio): add keyframe track headers 2026-07-16 18:12:10 -04:00
Miguel Angel Simon Sierra dba0a517d3 feat(studio): add timeline property lanes 2026-07-16 18:12:10 -04:00
Miguel Angel Simon Sierra 84799219e7 feat(studio): add timeline keyframe interactions 2026-07-16 18:12:10 -04:00
Miguel Angel Simon Sierra ff47c390e8 feat(studio): add variable timeline row geometry 2026-07-16 18:12:09 -04:00
Miguel Angel Simon Sierra 050bd2042a feat(studio): add keyframe timeline state 2026-07-16 18:12:09 -04:00
Miguel Angel Simon Sierra ee9141d04d feat(studio): add keyframe ease inspector 2026-07-16 18:11:37 -04:00
Miguel Angel Simon Sierra 0e07d599d7 feat(studio): add keyframe ease controls 2026-07-16 18:09:30 -04:00
Miguel Angel Simon Sierra 3a59b01f6f feat(core): add deterministic keyframe ease runtime 2026-07-16 16:37:26 -04:00
Miguel Angel Simon Sierra 5304a03c4e chore(studio): keep thumbnail store under size limit 2026-07-16 16:37:12 -04:00
Miguel Angel Simon Sierra 1d59e84b23 test(studio): enable thumbnails in the empty-label test (fixes pre-existing failure)
The thumbnails-off-by-default toggle (6b5ea8257) left this test asserting
thumbnail content without enabling thumbnails, so it produced no thumbnail
content and failed. Enable thumbnailsEnabled for the case and reset it in
afterEach; the label ownership assertion is unchanged (TimelineClip owns names).
2026-07-16 16:37:11 -04:00
Miguel Angel Simon Sierra 5274e4d19f fix(studio): resolve Chrome for dev thumbnails via env + puppeteer cache
Dev-server thumbnail generation only probed three hardcoded system Chrome paths,
so on a machine with no system Chrome install (but a Puppeteer-cached
Chrome-for-Testing) it found no browser and every thumbnail request 500'd.
Resolve the executable from PUPPETEER_EXECUTABLE_PATH / CHROME_PATH / CHROME_BIN,
then a broader set of system browsers, then the Puppeteer cache (highest
version).
2026-07-16 16:37:11 -04:00
Miguel Angel Simon Sierra e8a9c7a184 feat(studio): timeline clip thumbnails off by default with a toolbar toggle
Background thumbnail generation (per-clip composition/video frame capture)
lags timeline scrubbing on long videos (#2428). Adds a persisted
thumbnailsEnabled setting, default OFF, so the timeline is snappy out of
the box; a toggle next to Fit in the zoom toolbar turns thumbnails on.
When off, clips render as plain bars (audio still shows its waveform).
2026-07-16 16:37:11 -04:00
Miguel Angel Simon Sierra f38042c01f fix(core): install runtime bridge after transport setup 2026-07-16 16:36:37 -04:00
James Russo 172f2757f0 feat(studio): clarify storyboard review handoff (#2560)
## What changed

- adds a stage-aware review guide for plan, sketch, animation, and final-review states
- makes the review loop explicit: review frames → save feedback → reply in agent chat
- adds copyable agent handoff and approval messages
- keeps frame status agent-owned and presents planned frames before previews exist
- clarifies voiceover ownership, save state, feedback errors, and preview availability
- improves responsive layout and surfaces storyboard warnings without dominating the board
- adds unit coverage for review-stage and handoff-step derivation

## Why

Storyboard reviewers could leave comments, but the UI did not clearly explain when a pass was ready, what to inspect, or how saved feedback reaches the agent. This makes the human-to-agent iteration loop visible while preserving the existing file-based handoff.

## Impact

Users get a clear next action throughout the storyboard lifecycle and can copy the exact message needed to continue the agent workflow. The underlying storyboard and frame-comment formats are unchanged.

## Validation

- `bun run --filter @hyperframes/studio test --run src/components/storyboard/storyboardReviewStage.test.ts` — 13 tests passed
- `bun run --filter @hyperframes/studio typecheck`
- pre-commit: tracked artifacts, lint, formatting, Fallow audit, typecheck
2026-07-16 16:16:42 -04:00
James 68beec0e76 fix(studio): guard storyboard history navigation 2026-07-16 15:49:40 -04:00
James ded443647d fix(studio): address storyboard review feedback 2026-07-16 14:56:11 -04:00
James 73dd38f93e feat(studio): clarify storyboard review handoff 2026-07-16 14:56:11 -04:00
James Russo 4b9135393e Merge pull request #2159 from heygen-com/07-10-refactor_engine_add_browser_leases
refactor(engine): add fingerprinted browser leases
2026-07-16 14:42:06 -04:00
James d4cfa08cb6 fix(engine): escalate hung browser lease closes 2026-07-16 12:58:10 -04:00
James 9b23c00237 refactor(engine): add fingerprinted browser leases 2026-07-16 12:58:10 -04:00
WaterrrForever 3bb26b0f08 docs(skills): make the core set the default install on every surface (#2554)
* docs(skills): make the core set the default install on every surface

A field test showed an agent with a real 'make videos' intent installing
all 19 skills: at install time, every surface it could read pointed at the
full set, while the core-eager / workflow-on-demand design only exists
inside hyperframes/SKILL.md - unreadable until after the install decision.

Two traps made full-install the documented default:
- The README Quick Start used 'skills add --yes': skills.sh force-detects
  agent environments into non-interactive mode, and a non-interactive run
  without --skill installs all 19. Dropping --yes fixes the human path
  (the picker opens with nothing pre-selected), but not the agent path.
- marketplace.json listed the full 'hyperframes' bundle first, under the
  name an agent installing 'hyperframes' matches; core-skills sat second.

Changes, each behavior verified by an isolated run:
- README Quick Start drops --yes (humans get the picker; verified via a
  pty capture that nothing is pre-selected) and points agents and
  non-interactive runs at 'npx hyperframes skills update', which from a
  clean HOME installs exactly the 8 core skills, refreshes stale ones and
  prunes unpublished ones on an existing machine, and is idempotent.
- CLAUDE.md and the docs install guide lead with the same one-liner;
  --all is reworded to explicit-request-only at every surface.
- marketplace.json puts core-skills first and both descriptions steer the
  default choice; the full entry keeps auto-discovery (no allowlist),
  per the skillsManifest core-pin test (56/56 pass).

* docs(skills): close the same install trap in AGENTS.md

Review follow-up on the core-default change: AGENTS.md still carried a
bare 'npx skills add heygen-com/hyperframes' - no --full-depth, and the
same non-interactive-installs-everything trap the README fix closed.
AGENTS.md is the first file Codex/Cursor-family agents read for repo
intent, so it leaked the full-set default to exactly the readers the
core-default policy targets. It now leads with the same core-set
one-liner and policy line as CLAUDE.md.
2026-07-17 00:49:43 +08:00
Miguel Ángel 771145a5c4 fix(registry): remove invalid media from caption components (#2454)
* fix(registry): remove invalid media from caption components

* test(registry): enforce nested media contracts
2026-07-16 12:16:45 -04:00
Miguel Ángel 55ee559e40 fix(lint): catch cold-seek opacity reveals (#2503)
* fix(lint): catch cold-seek opacity reveals

* fix(lint): resolve hidden selector aliases

* style(lint): format gsap rule
2026-07-16 12:03:25 -04:00
Miguel Ángel 9b17a5ad7e fix(cli): avoid Python whisper CLI collision (#2414) 2026-07-16 12:03:21 -04:00
Miguel Ángel ed1f38124b fix(engine): preserve mono audio level (#2392) 2026-07-16 12:03:17 -04:00
Miguel Ángel e846cd6004 fix(cli): fail clearly on unsupported Node versions (#2388) 2026-07-16 12:03:13 -04:00
Miguel Ángel 584be6d64a fix(transcribe): select multilingual model before download (#2303) 2026-07-16 12:03:09 -04:00
Miguel Ángel 75eedf5cc1 fix(cli): time out stalled model downloads (#2415) 2026-07-16 11:45:49 -04:00
Miguel Ángel 335e7483b5 fix(talking-head): preserve source audio (#2260) 2026-07-16 11:30:49 -04:00