Repository navigation
feat(studio): a Graph panel of the scene graph - #94
Conversation
Quest-Claim: 4c304ee980226ff0
Sources, scenes, the top layer, and audio scenes as nodes, wired left to right to what draws or holds them. Dragging from an output onto an input places a source or sends a sound; a picked wire's Remove takes it out. Sound nodes carry the Audio panel's strip controls and a live waveform; scene nodes the Scenes panel's Publish and carried audio scene. Levels are now taken once per 50 ms step for every panel, so the Audio panel's second meter on each audio scene no longer reads near silence. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 24 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head 9fbfa82 against base a8ca56f.
No actionable findings. Checked graph construction and routing edits in ui/graph.rs, Collection/Draft validation and undo integration, the shared scene/audio controls in ui.rs, and the cached levels in ui/levels.rs. Picture removals preserve item-index tracking, fixed dependency wires stay read-only, and audio sends reject nesting loops. Reading each meter once per sampling step also avoids the previous duplicate reset.
Direction: deriving the graph from Collection and reusing the existing edit path keeps one routing model and avoids a separate graph state to reconcile.
The synchronization received during review only merged the updated base; all seven PR patches retain the reviewed added/removed lines.
Verification: GitHub-only static review, including repository guidance, surrounding callers and pinned audio meter implementation. No builds, tests, runtime UI checks or quest context execution; pinned quest context was read as source.
(Written by review (OpenAI))
|
Pick (/quest-complete, maintainer away under /afk, recommended option): ✅ Merge, keeping the choices made without asking: the tab beside Preview, the automatic layout with no saved positions, and one undoable removal per picture wire. Check passed and the OpenAI review found nothing. Merged main (#95), with no conflicts. (Written by Claude Opus 5.5) |

Problem
quest/m1/scene-graph.md asked for a Graph panel: picture and audio scenes as nodes, wired to the sources and scenes they draw or send to, with each sound's volume, pan, and a live waveform on its node, and edges and node settings editable there. Planned 2026-11-05 with the maintainer: the live controls stay a mixer; this view is for building and inspecting routing, on the same data, with no second model.
Approach
rs/moq-studio/src/ui/graph.rs), a tab beside Preview. Each frame it builds the graph from theCollection, so undo, reloads, and other panels' edits show at once:Draftedit with the same labels as the other panels, so it lands in History and undoes there.strip_controls. A scene node shows the Scenes panel's Publish and carried audio scene throughscene_settings, applied byscene_action, which is extracted from the Scenes panel. An audio scene node has On program and Listen. Clicking a scene previews it, and clicking a source picks it for Filters.rs/moq-studio/src/ui/levels.rs).Levelstakes every strip's and audio scene's level once per 50 ms step, keeps 4 s of history for the waveforms, and feeds the Audio panel's meters too. A waveform mirrors each step's peak (faint) and RMS (solid) on the meters' dB scale.Mix::leveltakes and resets the meter, and the Audio panel called it twice per frame for each audio scene. The second meter, on the audio scene's own strip row, read silence. Onmainwith a looping tone, the Program row at the top read full and the Program strip below read empty; on this branch both read full (screenshots on nixos).strip_controls, so a pan added there shows in the Audio panel and on the Graph node. This PR extends that quest's Goal to say so, and notes the seam in its Plan. There is no stub control.README.mdgains a Graph row in Panels and a Scene graph section. The quest is deleted.Choices made without asking:
Public API
None: the studio's UI only. The scene file format is unchanged.
Validation
just cion nixos (Linux) at the head below: all checks and 284 tests passed. New unit tests cover the layout (columns, lanes, dimming, fixed wires) and the wire edits (place, remove every item, sends, refusals, audio loops).persononto the top layer placed it over program; picking that wire showed it with Remove; waveforms moved with a looping tone. The meter fix was compared againstmainas described above.Follow-ups
None beyond quest/m0/audio-pan.md, which now covers the Graph node's pan.
Review
Codex (gpt-6.1-sol, medium effort), round 1 of session
01a1b6d9-fbfb-7290-a157-5b84839d976d, reviewed headd0560b5b67c2263493fd604f3607f201f44d2c3fagainstorigin/maina8ca56f: no findings.(Written by Claude Opus 5.5)
🤖 Generated with Claude Code