# Dual-view flight studio

Open [flight-studio.html](flight-studio.html), or `../fly-studio.html`. This is a new page; previous flight and dashboard pages remain unchanged.

The left column contains the living circuit, its activity graph, and compact pitch/roll/throttle controls. Two large right-hand views default to **Close-up** and **Chase**. Each camera can be orbited, zoomed and changed independently. Both render the same Three.js scene, articulated fly, aircraft state and world in the same animation frame. There is one flight/neural worker, not a separate simulation for each camera.

## Anatomical context

The living circuit now defaults to **brain + locomotor circuit**, arranged vertically for the narrow sidebar. The brain contains a static point cloud of **23,210 anatomical positions** copied byte-for-byte from Desktop Fly's `data/brain_points.json`. Desktop Fly describes these as real soma positions. Its ETL derives the sampled cloud from FlyWire Codex FAFB v783 coordinates/classification data and applies the same normalization to that cloud and to the 668-neuron brain circuit. Our display also applies one shared center, uniform scale and translation to both, preserving their registration and spatial proportions.

The background is a sampled point cloud for whole-brain spatial context—not a complete anatomical surface, full neuron reconstruction or an additional 23,210-neuron simulation. Background points remain dim and static, colored by the source's anatomical class palette. Only the 1,713 simulated circuit neurons have activity-dependent brightness. The 1,045-neuron locomotor circuit is a separate specimen and remains explicitly schematic; its placement below the brain is a display layout, not a measured anatomical attachment.

For readability, the combined overview shows the 1,100 strongest connection rows from each circuit (2,200 total). A single-circuit view can show its 2,200 strongest rows. Selecting a neuron shows its incident connections instead. Background points cannot be selected or stimulated. These display changes do not modify the neural graphs, weights, motor mapping or flight physics.

The context file, source revision, hash and license are recorded in [studio/source-manifest.json](studio/source-manifest.json). FlyWire data attribution and CC BY-NC 4.0 terms are preserved in [neural/data/DATA_LICENSE.md](neural/data/DATA_LICENSE.md); Desktop Fly code attribution remains in [fly/LICENSE](fly/LICENSE).

## Minimal recording mode

The **Minimal mode** toggle is at the top. It hides camera menus, circuit options, search/stimulation controls, slider controls, explanatory text and the footer, while keeping both large views, the live brain/activity display, measured control values and essential flight telemetry. The small “dim: anatomy / bright: activity” legend stays visible to distinguish anatomical context from simulation. A failed flight remains visible with a compact outcome label rather than a large obscuring overlay.

Pause, reset and the exit-minimal toggle remain at the top. A separate Fullscreen button is available in the normal layout. Keyboard shortcuts, when not editing an input:

- **M:** toggle Minimal mode.
- **Space:** pause/resume the trial.
- **R:** reset the flight.

The mode preference is stored locally. `fly-studio.html?minimal=1` explicitly opens the recording layout; `?minimal=0` opens the normal layout. It is a presentation mode, not a video encoder or recorder. Use the browser/OS recording workflow of your choice.

On narrow screens, the two flight views and the left-column panels stack vertically. On a desktop, both right-hand views stay visible together. Each camera's aspect ratio and renderer resize to its own panel, including when Minimal mode changes the layout.

## Unchanged untrained trial

The page still runs the fixed-connectome, untrained flight experiment described in [FLIGHT.md](FLIGHT.md). No flight director, trained motor policy or learning worker is introduced. Camera and display operations do not change simulation time or controls. The unchanged default trial reaches terrain impact at **93.3 simulated seconds**.

Browser checks verified both default cameras, their independence, shared state/one worker, background loading, both-circuit default, compact left controls, normal/minimal layouts, keyboard/input behavior, resizing, mobile overflow, reset and the same 93.3-second failure. With external requests blocked, no remote requests, failed local requests or page errors were recorded. The original flight page was also checked. Renderer changes do increase graphics work: two flight scene draws plus the live circuit view.
