Skip to content

Projects hold videos; AI changes can be put back and never overwrite an edit - #89

Merged
pallaoro merged 2 commits into
mainfrom
ai-safe-edits-videos
Nov 10, 2026
Merged

pallaoro merged 2 commits into
mainfrom
ai-safe-edits-videos

Conversation

@pallaoro

Copy link
Copy Markdown
Member

Two changes found on Circulate's first real run (2026-11-10).

AI changes are safe to make from anywhere

A quick answer from /instruct overwrote the cut with no check and kept no earlier version. The first wrong attempt replaced the full talk, and only undo in that one open tab could bring it back.

  • A quick change is now written only over the cut it read: UPDATE … WHERE edl = <read>. If someone saved while the model worked, it comes back stale and is kept aside, the same as background jobs.
  • Every applied change is recorded as a job with its before and after. POST …/ask/jobs/{job}/revert puts it back, but only while the cut is still what that change made. After a later edit it answers 409. In the panel this is a Put back control, which the editor takes in as an undo step.

Projects hold videos

The clips from make_clips were landing as separate top-level projects. Editors keep them inside the project: Premiere sequences, Resolve timelines, and Descript's "Clips from [composition]" folder.

  • edit_projects.parent_id. The project's first row holds the footage, highlights and conversation. Every other video is its own row with its own timeline, formats, exports, share link and comments, so all of those work unchanged.
  • GET /api/projects lists projects only (plus videos and video_ids). GET /api/projects/{id}/videos lists them, POST /api/projects/{id}/videos { name, from? } makes a new or copied video, and PUT /api/projects/{id} { parent_id } moves an empty project in.
  • Deleting a project deletes its videos first, so the footage clean-up sees no other users of the footage.
  • make_clips makes videos of the project. Footage, highlights and the listed videos come from the project whichever of its videos is open.
  • Editor: a Videos switcher in the project bar (list, new 9:16 video, copy, delete). The footage panel and highlights read from the project. Projects show "N videos", and the sidebar keeps the project marked.

Tests

  • e2e 18: a quick change is recorded, put back, refused after a later edit, and kept aside over a concurrent save.
  • e2e 17: clips have parent_id and aren't in the list. Then the videos list, copy, move-in and never-into-a-video cases, and the project delete taking its videos with it.
  • 306 unit tests, all e2e, tsc and vite build pass. I checked the switcher and the projects list in a headless browser against a local run.

@pallaoro
pallaoro merged commit 7895401 into main Nov 10, 2026
1 check 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