Skip to content

Video annotation: timeline toolbar + media info bar#7666

Open
tom-vx51 wants to merge 4 commits into
chore/va-integrationfrom
feat/va-toolbar
Open

Video annotation: timeline toolbar + media info bar#7666
tom-vx51 wants to merge 4 commits into
chore/va-integrationfrom
feat/va-toolbar

Conversation

@tom-vx51
Copy link
Copy Markdown
Member

@tom-vx51 tom-vx51 commented May 28, 2026

🔗 Related Issues

None

📋 What changes are proposed in this pull request?

Adds a toolbar and a media information bar to the video annotation surface.

  • Timeline controls slot — a generic controlsSlot in the timeline header for injecting custom controls between the transport buttons and the playhead time display. Defaults to nothing; existing timelines are unchanged.
  • Annotation toolbar — a data-driven toolbar rendered in that slot, exposing Mark Keyframe and Propagate (linear interpolation between keyframes). Eligibility and bracketing-keyframe resolution are shared with the keybinding so they can't drift; Propagate is disabled-with-a-reason when it can't fire.
  • Media top bar — shows filename, resolution, fps, and codec on the left and a programmatic status slot on the right.
  • Propagation fix — applying a propagation reuses the existing per-frame detection _id (an in-place replace rather than a duplicate add) and records the parent keyframes' ids in the provenance blob.

Stacked on #7686.

🧪 How is this patch tested? If it is not, please explain why.

Tested locally in the app.

📝 Release Notes

Is this a user-facing change that should be mentioned in the release notes?

  • No. You can skip the rest of this section.
  • Yes. Give a description of this change to be included in the release
    notes for FiftyOne users.

What areas of FiftyOne does this PR affect?

  • App: FiftyOne application changes
  • Build: Build and test infrastructure changes
  • Core: Core fiftyone Python library changes
  • Documentation: FiftyOne documentation changes
  • Other

@tom-vx51 tom-vx51 requested a review from a team as a code owner May 28, 2026 23:33
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 28, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (4)
  • develop
  • main
  • release/.*
  • feat/.*

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: f2d4872c-16b5-43b1-9cdd-9f3c646c2690

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/va-toolbar

Comment @coderabbitai help to get the list of available commands and usage tips.

tom-vx51 added 4 commits May 31, 2026 14:07
  Reuse the existing per-frame detection's _id when applying linear
  propagation so in-between frames are overwritten in place (replace)
  instead of appending a duplicate that only the shared instance id
  masked. Record the parent keyframes' mongo _ids in the propagation
  blob instead of the cross-frame-stable synthetic overlay id (identical
  for both ends of a track). Test updated to lock in _id provenance.
  Optional node rendered between the playback control buttons and the
  playhead time display, threaded TimelineWithTracks -> TimelineHeader ->
  TimelineControls. Defaults to nothing; existing timelines unchanged.
… propagate)

  Mark Keyframe / Propagate actions in the timeline controls row via the
  new controlsSlot. Driven by a ToolbarActionGroup config
  (useVideoAnnotationActions) matching @fiftyone/components' ActionToolbar
  shape, so actions are added by editing the hook, not the renderer.
  Extract resolvePropagationTarget as shared eligibility/bracketing logic
  and route the '-' keybinding through it so button and hotkey can't drift.
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