Dataset URL currently shown, or null before the first load.
What the display calls itself: the scene's authored
viewer_config.title, else the ?title= parameter, else the page's own.
Here because a remote controller cannot know it any other way — a touch
panel is a separate page whose own document.title is the bundle's
generic string, and putting that in front of an audience is exactly the
wrong heading.
The sound layer: context state, mute, gains, what is playing.
The scene's authored viewer_config.control_panel block, or null.
null means "derive everything", which is the normal case: the touch
panel builds itself from a discrete dimension's categories and needs no
authoring at all. Here because the panel is a SEPARATE PAGE from the
display and has no other way to read the store's attributes.
Everything a remote controller needs to mirror the viewer: the dataset, the camera pose, the slice position, the rendering settings and the per-layer appearance. All values are copies — mutate freely.