Feature/in review pinning - #183
Open
camerontarget14 wants to merge 21 commits into
Open
Conversation
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>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
stowed. Also added RV sync to settings modal. Signed-off-by: Cameron Target <camerontarget@gmail.com>
- "Add Version" menu item now opens a search field: pick an existing
version to add to the playlist, or create a new one in ShotGrid via
"+ Add Version". Creating prompts a second step to link the version
to a shot/asset, with the option to create that entity too.
- "Change Playlist" no longer bounces to the home page; it opens the
same style of typeahead listing the project's playlists, with
"+ Add Playlist" to create one and switch into it.
- Backend: new POST /playlists/{id}/versions and
POST /projects/{id}/playlists endpoints; create_version,
create_entity, create_playlist, and add_version_to_playlist on the
provider base, ShotGrid, and mock providers (mock uses a short-lived
read-write SQLite connection).
- Inline inputs keep their dropdown open during pending/error states
so failures are visible, and reset the error on the next keystroke.
Signed-off-by: Cameron Target <camerontarget@gmail.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
- Publish dialog: per-version "Version Status" row (checkbox + dropdown)
above notes, pre-checked when a status change is pending; status-only
changes now surface and publish without a note
- Backend: PATCH /versions/{id}/status endpoint; status_version_ids
allowlist on publish-notes to decouple status from note publishing
- Reload Playlist / refresh now syncs the selected version so upstream
status changes are reflected
Signed-off-by: Cameron Target <camerontarget@gmail.com>
Clear draft version_status overrides after a successful status publish and sync versionStatus from the server in useDraftNote so the version header dropdown follows the freshly published status. Signed-off-by: Cameron Target <camerontarget@gmail.com>
notes
- PATCH /versions/{id}/status accepts playlist_id and clears fulfilled
draft version_status intents server-side, touching only that field so
note publish state is preserved (a frontend-side clear was resetting
published=false and causing unchanged notes to republish)
- useDraftNote syncs versionStatus from the server so the version header
dropdown follows the freshly published status
Signed-off-by: Cameron Target <camerontarget@gmail.com>
Sync content and subject from the server in useDraftNote's same-context update so edits saved by another instance (e.g. the publish dialog's editor) appear in the main editor. Skipped while the local instance has unsaved or in-flight edits so typing is never clobbered. Signed-off-by: Cameron Target <camerontarget@gmail.com>
reflect back to main UI after publish. 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>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
Signed-off-by: Cameron Target <camerontarget@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Summary
In-review eyeball moved and made interactive in the version sidebar
UI (
VersionCard.tsx,Sidebar.tsx)space-between: note-status badge stays top-right, the in-review eye moved to the bottom-right of each card.Pinnedlabel appears left of the eye and the card gets a soft accent wash. Clicking the pinned eye unpins and resumes RV sync.stopPropagation'd so pinning doesn't change the selected version.Pin state (backend)
in_review_pinnedfield on playlist metadata (Python models +interfaces.ts).RVSyncServicestill tracks/broadcasts RV's playhead while pinned but skips writingin_review.resume_sync(), called byPUT /playlists/{id}/metadatawhenin_review_pinnedgoes false, so unpinning snapsin_reviewto RV's current version instead of waiting for RV's next move.Hook (
useSetInReview)pinInReview,unpinInReview, andselectInReview(sets in review and clears any stale pin, for the RV-disconnected case).Tests — 3 new backend tests (pin suppresses sync; resume with/without a session), 689 backend tests pass. New
VersionCard.test.tsxwith 7 tests covering both RV-connected and disconnected behavior. No new typecheck errors; the 19 pre-existing frontend test failures are unchanged.Testing
How I Tested
Stood up the app and tested.