* fix: add progress logging during silent render pipeline stages
The render pipeline only updates progress at stage boundaries (5%, 10%,
25%), leaving multi-minute gaps with zero log output on low-memory
hardware. This adds log.info calls at key sub-steps within the three
silent stages:
- Probe stage (5%): browser launch, session initialization, duration
discovery, media asset discovery, audio volume automation, video
visibility window detection
- Video extraction (10%): per-video extraction progress
- Calibration (25%): browser launch, session initialization,
per-frame calibration progress, final cost estimate
Also adds 30-second heartbeat timers for the two initializeSession
calls (probe and calibration) that can individually take minutes on
constrained hardware.
Closes#1218
* fix: resolve CI failures in typecheck, runtime seek test, and timeline test
- Make handleGsapMaterializeKeyframes optional in DomEditSessionSlice
and use optional chaining at the call site (not yet wired)
- Update GSAP adapter seek test to expect nudge+seek pattern
(totalTime with suppressEvents:true followed by actual seek)
- Fix Timeline canvas height test to use TRACK_H constant (48)
instead of stale hardcoded value (72)
* refactor: extract helpers to meet 600-line file size limit
- App.tsx (603→594): extract StudioToast component
- useDomEditSession.ts (688→600): extract useGsapSelectionHandlers hook
- Timeline.tsx (614→557): extract useTimelineAssetDrop hook
- PropertyPanel.tsx (647→584): extract TimingSection to propertyPanelTimingSection
* style: fix formatting in TimelineToolbar