diff --git a/app/renderer/control/ControlApp.tsx b/app/renderer/control/ControlApp.tsx index cf27ad2..c4117b6 100644 --- a/app/renderer/control/ControlApp.tsx +++ b/app/renderer/control/ControlApp.tsx @@ -51,8 +51,8 @@ export function ControlApp() { const [fxState, fx] = useEffectsState(); const [session, setSession] = useState(null); const historyRef = useRef([]); - const suppressNextHistoryPushRef = useRef(false); const [history, setHistory] = useState([]); + // Сюжетная линия — только UI-состояние пульта. Не меняет граф, сцены и связи проекта. const sceneAudioElsRef = useRef>(new Map()); const sceneAudioMetaRef = useRef>(new Map()); const [sceneAudioStateTick, setSceneAudioStateTick] = useState(0); @@ -104,16 +104,6 @@ export function ControlApp() { const cur = state.project?.currentGraphNodeId ?? null; if (!cur) return; const arr = historyRef.current; - if (suppressNextHistoryPushRef.current) { - suppressNextHistoryPushRef.current = false; - setHistory(arr); - return; - } - // Если мы перемотались на уже существующий шаг, не дублируем его в истории. - if (arr.includes(cur)) { - setHistory(arr); - return; - } if (arr[arr.length - 1] !== cur) { historyRef.current = [...arr, cur]; setHistory(historyRef.current); @@ -150,6 +140,8 @@ export function ControlApp() { const project = session?.project ?? null; const currentGraphNodeId = project?.currentGraphNodeId ?? null; + const currentHistoryIdx = + currentGraphNodeId != null ? history.lastIndexOf(currentGraphNodeId) : -1; const currentScene = project && session?.currentSceneId ? project.scenes[session.currentSceneId] : undefined; const isVideoPreviewScene = currentScene?.previewAssetType === 'video'; @@ -1174,7 +1166,7 @@ export function ControlApp() { {history.map((gnId, idx) => { const gn = project?.sceneGraphNodes.find((n) => n.id === gnId); const s = gn ? project?.scenes[gn.sceneId] : undefined; - const isCurrent = gnId === project?.currentGraphNodeId; + const isCurrent = idx === currentHistoryIdx; return ( +