Skip to content

Feature/rv live review link - #180

Open
camerontarget14 wants to merge 8 commits into
mainfrom
feature/rv-live-review-link
Open

Feature/rv live review link#180
camerontarget14 wants to merge 8 commits into
mainfrom
feature/rv-live-review-link

Conversation

@camerontarget14

Copy link
Copy Markdown
Collaborator

Summary

The feature: DNA can now mirror "in review" from a running RV session. Since Autodesk's Live Review cloud has no public API, we sidestepped it entirely — the DNA backend speaks RV's documented TCP network protocol to the presenter's local RV, which always knows what's on screen. Works with plain RV + ShotGrid integration; Live Review isn't required.

Backend (dna/rv_sync/):

  • An asyncio client for RV's network protocol (handshake, remote code eval, event push).
  • A one-time code injection into RV that pushes a dna-view-changed event whenever the source under the playhead changes — no polling.
  • A service that parses the SG Version ID from the source's tracking.info metadata and writes it to the playlist's existing in_review field, broadcasting status over the existing WebSocket.
  • Five endpoints: scan, connect, status, disconnect, and launch-url.

Frontend:

  • An RvSyncMenu popover (mirrors the transcription join-call UX): Connect to RV scans localhost and auto-connects; Open playlist in RV launches RV via a baked rvlink:// URL with networking on and the playlist's versions pre-loaded (using SG's own allowlisted sessionFromVersionIDs eval, which bootstraps the tk engine).
  • WebSocket-driven invalidation of the playlist-metadata query, so the in-review marker moves live for everyone viewing.

The three bug fixes after first field test:

  1. Scan no longer dies when a port accepts a connection then closes without greeting (Docker's host proxy and RV mid-boot both do this).
  2. Bindings reinstall on every connect — RV's bind() replaces per event, so the "already bound" guard was actively harmful in long-lived RV processes.
  3. Every connection now greets RV with a unique contact name — RV routes event deliveries by contact name, and reused names sent our events to dead sockets (the root cause of "updates only on reconnect").

Testing

  • I have tested these changes locally
  • I have run all relevant automated tests
  • I have verified this does not break existing workflows
  • For changes that can be tested in UI, I have included screenshots or gif animations of the changes.

How I Tested

Ran DNA and RV on my Mac.

version_change_rv

Signed-off-by: Cameron Target <camerontarget@gmail.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
in RV"

Signed-off-by: Cameron Target <camerontarget@gmail.com>
Opening a playlist from DNA with no RV running spawned two RV windows
(the first showing an error) and in-review sync tracked the wrong one.

Two root causes:
- The launch rvlink carried the sessionFromVersionIDs -eval, which a
  cold-booting RV executes before its ShotGrid machinery is up: the
  eval errors and the session stays empty.
- The URL used -reuse 0, which a *running* RV handles by spawning a
  brand-new RV process, so the retry opened a second window while DNA
  stayed connected to the first one's network port.

Fix: the backend now returns two baked rvlink URLs, both with -reuse 1
so everything stays in one window. The launch URL only brings RV up
with networking (or enables networking on a running RV); the frontend
sends the load URL — carrying the -eval — only after the sync session
is connected, when RV is warm enough to honor it.

Verified cold end-to-end: single window, no error dialog, playlist
loads, and playhead moves sync in_review live.

Signed-off-by: Cameron Target <camerontarget@gmail.com>
@camerontarget14

camerontarget14 commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator Author
launch_rv

Fixed "Open playlist in RV" cold start for when that's used.

Signed-off-by: Cameron Target <camerontarget@gmail.com>
stowed. Also added RV sync to settings modal.

Signed-off-by: Cameron Target <camerontarget@gmail.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