Skip to content

Compare mode — polish & follow-ups #170

Description

@ravirajsinh45

Tracking the minor, non-blocking follow-ups for Version Compare (PR #169, beta #167). None of these block the feature — grouping them so they don't get lost.

From the pre-merge review

  • Wipe stage blanks on stream-load failure — if either side's stream URL fails to load, the wipe view renders an empty black stage (no version badges, divider, or error text). Side-by-side degrades gracefully (badges + "Stream unavailable"); give wipe the same fallback.
  • setT re-renders the comment panels at rAF rate during playback — the transport's setT runs ~60fps while playing, re-rendering the whole CompareOverlay including both CommentPanels. Memoize the panels (or throttle the t that reaches them) so a long thread doesn't cost reconciliation every frame.
  • Thin unit-test spotsAnnotationOverlay's prop-vs-store selection has no direct test; the batched comment-tree builder's unit test uses a loose mock (asserts shape + query count, not table/filter identity).

Other polish candidates

  • Keyboard a11y — the version dropdown, wipe divider, and scrubber markers are mouse-only; add keyboard operation + focus states.
  • Drag-to-scrub on the compare scrubber (currently click-to-seek only).
  • Double-click-to-reset zoom/pan in wipe mode (side-by-side already resets on double-click).
  • Backend: Annotation.frame_number is never populated — the create payload only sends drawing_data, so frame_number is always null; wire it if we want frame-based annotation queries later.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions