Skip to content

Render v5: open detached-sound stories; speed lengths from range (#408) - #161

Merged
apedintensor merged 1 commit into
mainfrom
design/v5-open-fix
Oct 22, 2026
Merged

apedintensor merged 1 commit into
mainfrom
design/v5-open-fix

Conversation

@apedintensor

Copy link
Copy Markdown
Member

Two defects found during the #408 browser acceptance on Codex's fixture qa408-cpu-v5-20261022:

  1. The frontend's validateProject rejected a detached generated track, so the story could not open ('could not be validated'). My own Detach button would have produced an unsavable story too.
  2. The editor computed a speed clip's length from stale seconds when the file was unreadable, so it showed 8.0 s instead of the exported 9.0 s. chapterTiming also used seconds, so sound placement could drift.

Fix plus regression tests (full validateProject after detach; stale seconds + unreadable file → 96/24/96 frames, 0–4–5–9 s). Verified locally against staging: the fixture opens, shows 9.0 s (4.0 + 1.0 + 4.0) and 0.5 s blend, and the fixture version is unchanged (3). npm test 870 pass.

🤖 Generated with Claude Code

…length from range (#408)

- validateProject accepted only coupled generated tracks (shotId + offset 0), so a story
  with a detached clip sound (detached:true, shotId '', absolute offset) failed to open or
  save. Detached tracks are now valid; coupled tracks keep their rule.
- A speed binding's length now always comes from its range and rate, as the exporter
  derives it, even when shot.seconds are stale (API edits) or the file is unreadable.
  chapterTiming uses the same, so sound placement matches the picture.

Found opening Codex's #408 CPU fixture on staging: it failed to open, then showed 8.0 s
instead of the exported 9.0 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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