0.10.3: preloader + multi-scene export parity, jumpToScene rewinds

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
thandClaude Opus 4.7 committed 2026-04-22 17:43:44 +02:00
1 parent 87de1344c4
commit fcb8edbb88
6 files changed
+461 -102

No files matched your search

+14 -6
View File
@@ -1973,11 +1973,13 @@ export const useSceneStore = defineStore('scene', {
/** Activate a page by id. Clears any drill-down state (clip-edit,
* button-edit, selections, drawing) so the new page isn't shown
* through the lens of a context that belongs to another page.
* Playback state is left alone — in the editor, flipping scenes
* is a navigation gesture and shouldn't force play. The fullscreen
* preview takes care of auto-playing on its own (the activeSceneId
* watcher re-mounts the preview player with play enabled). */
switchScene(id: string): boolean {
* Playback state is left alone by default — in the editor,
* flipping scenes is a navigation gesture and shouldn't force
* play or rewind. Script-fired or button-fired jumps use
* `{ resetPlayhead: true }` instead so the incoming scene starts
* at its own in-point rather than inheriting the previous
* scene's paused frame. */
switchScene(id: string, options?: { resetPlayhead?: boolean }): boolean {
if (!this.project.scenes.find((s) => s.id === id)) return false
this.project.activeSceneId = id
this.activeClipId = null
@@ -1990,6 +1992,9 @@ export const useSceneStore = defineStore('scene', {
this.drawingMode = null
this.drawingAssetId = null
this.drawingLayerId = null
if (options?.resetPlayhead) {
this.playhead = this.playbackIn
}
return true
},
renameScene(id: string, name: string): boolean {
@@ -2623,7 +2628,10 @@ export const useSceneStore = defineStore('scene', {
self.pause()
},
switchScene(sceneId: string) {
self.switchScene(sceneId)
// Script/button jumps restart the target scene at its in-point.
// Drawer clicks go through store.switchScene directly and keep
// the current playhead — navigation vs. transition.
self.switchScene(sceneId, { resetPlayhead: true })
},
warn(msg: string) {
// eslint-disable-next-line no-console