Take Two: approval belongs to a version
Published
Building a video review demo where comments retain their original evidence, fixes need verification and approval identifies the exact cut.
A browser-local video review demo with timestamped feedback, visual annotations, version comparison and approval tied to a specific cut.

Take Two keeps video feedback connected to the cut it concerns. A comment can point to a moment, a time range or an area of the image, and a required change keeps its original evidence as the film moves through revisions.
Create a project, add a supported local video and submit it for review. Switch to the Reviewer role to leave comments, draw a pin or rectangle annotation, flag required changes and request another pass. Submitted versions keep their own media and review history.

Timestamped feedback retains the original version, range and visual annotation.
The comparison view puts two versions beside each other, with linked or independent playback and a choice of audio source. Linked playback follows elapsed time. Each cut keeps its own evidence anchors, so an edit that changes timing does not move an earlier comment to a different scene.

Compare the cuts while keeping the original feedback and proposed fixes in view.
Editors mark fixes as addressed; reviewers verify them. Open and addressed requirements block approval until they are resolved or withdrawn. Approval records identify the exact submitted version, and reopening a review preserves its earlier decision. Printable review reports and JSON exports keep the discussion, requirements and decisions together; video files are excluded from those exports.

Approval belongs to Version 2, with the resolved requirements and earlier feedback still visible.
The interface uses warm neutral surfaces, charcoal text and coral accents. On a narrow screen, the video comes first and the review controls follow underneath. Unsent feedback drafts, conflicting edits and failed local saves have recovery paths that keep the work visible.

The same review workspace at a 390-pixel mobile viewport.
Built with React, TypeScript, Vite and IndexedDB. This is an independent portfolio demo with fictional sample projects and two bundled motion-graphic cuts. One visitor switches between simulated Editor and Reviewer roles. Project data and imported videos stay in the current browser profile; there is no account service or remote collaboration.
Published
Building a video review demo where comments retain their original evidence, fixes need verification and approval identifies the exact cut.
canplay transition.
Metadata, first-frame, user-initiated playback, and playing events now all
clear the waiting state.canplay and loadeddata listeners unavailable.sessionStorage draft identity with per-browsing-context
ownership stored in window.name. Opener-created and duplicated tabs get a
new owner immediately, while reloads, back-forward restores, and SPA
navigation retain the same recoverable drafts.window.open, including
independent comment drafts and reload recovery in both tabs.