mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-14 19:27:05 -04:00
- PanelKind::Viewer(n): more Composition viewers (panels::viewers). One is active (the full interactive viewer, showing the active comp); the others show their own comp's frame at that comp's current time (CPU or GPU frames, their own textures) and become active on a click or their tab, their comp becoming the active comp. - view.newViewer (View menu, the Composition panel menu, Alt+Shift+N): a new viewer of the active comp next to the one in use, which is locked. Opening a comp while the active viewer is locked shows it in an unlocked viewer, or a new one when every viewer is locked. Closing the active viewer hands over to another with its comp. Tabs are named after their comp, with their own lock and swatch; Preview full screen maximizes the active viewer. - UI state: viewers (comp per viewer) and active_viewer (serde). - Tests: ui_viewers (lock on New Viewer, routing, click to activate, all locked → new viewer, close hand-over, tab titles; an ignored snapshot). The bounded-drag frames test asserts what holds when freed addresses are reused. Docs: parity, control protocol. Co-Authored-By: Claude Opus 5.5 <[email protected]>