- Record mode is now fully immutable: gate MouseControls mouse-look + focus()
on the viewport lock (new MouseControlsDeps.isViewportLocked → cameraController
.locked), matching the existing FreeCam/tick gates.
- Default main (viewport) camera pulled back + elevated to a Blender-style 3/4
view so a blank scene shows the full render-camera frustum.
- Auto-keyframe: mutating an already-keyframed object (gizmo drag-end or panel
commit) replaces/creates a keyframe at the playhead via
TimelineController.autoKeyIfTracked.
- loadTimeline backfills fps/duration/tracks defensively (legacy save safety).