Put default video length on the main Settings panel and let Studio save it.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Towsty
2026-09-03 19:47:58 -05:00
co-authored by Cursor
parent 86e23499a9
commit e790c9bff7
3 changed files with 44 additions and 23 deletions
+16 -16
View File
@@ -21,7 +21,7 @@
>{{ notice }}</p>
<section v-if="activePanel === 'gpu'" class="glass rounded-3xl p-5 sm:p-6">
<h2 class="font-display text-xl font-bold">GPU</h2>
<h2 class="font-display text-xl font-bold">GPU & defaults</h2>
<div class="mt-4 space-y-3 rounded-2xl border border-white/10 bg-zinc-950/50 px-4 py-3">
<p class="text-sm text-zinc-400">
Stops Comfy on the desktop GPU so it drops out of VRAM. The PC stays on. Generate or Wake GPU will start it again.
@@ -66,18 +66,19 @@
</span>
</label>
<p v-if="notifyMessage" class="mt-2 text-xs text-zinc-500">{{ notifyMessage }}</p>
</section>
<section v-if="activePanel === 'studio'" class="glass rounded-3xl p-5 sm:p-6">
<h2 class="font-display text-xl font-bold">Studio</h2>
<p class="mt-1 text-sm text-zinc-400">Defaults for new video jobs. Extend still copies the length of the clip you are extending.</p>
<div class="mt-4 max-w-xs rounded-2xl border border-white/10 bg-zinc-950/50 px-4 py-3">
<DurationField
v-model="defaultVideoDuration"
label="Default video length"
hint="Used when you open Studio or add a new shot. Extend uses the source clip’s length."
@update:model-value="onDefaultVideoDuration"
/>
<div class="mt-6 border-t border-white/10 pt-5">
<h3 class="text-sm font-semibold text-zinc-200">Default video length</h3>
<p class="mt-1 text-xs text-zinc-500">New Studio jobs and new shot cards start at this length. Extend still copies the clip you are extending.</p>
<div class="mt-3 max-w-xs">
<DurationField
v-model="defaultVideoDuration"
label="Seconds"
lock-key="default-video-duration"
@update:model-value="onDefaultVideoDuration"
/>
</div>
<p class="mt-2 text-xs text-zinc-500">Saved as {{ defaultVideoDuration }}s for this browser.</p>
</div>
</section>
@@ -409,7 +410,7 @@ export interface SettingsFolder {
unlocked: boolean
}
type SettingsPanel = 'gpu' | 'studio' | 'storage' | 'login' | 'folders' | 'loras' | 'keeps' | 'prompts'
type SettingsPanel = 'gpu' | 'storage' | 'login' | 'folders' | 'loras' | 'keeps' | 'prompts'
type LoraKindFilter = 'all' | 'image' | 'video'
const route = useRoute()
@@ -422,7 +423,7 @@ const notice = ref('')
const noticeError = ref(false)
let noticeTimer: ReturnType<typeof setTimeout> | null = null
const panelIds: SettingsPanel[] = ['gpu', 'studio', 'storage', 'login', 'folders', 'loras', 'keeps', 'prompts']
const panelIds: SettingsPanel[] = ['gpu', 'storage', 'login', 'folders', 'loras', 'keeps', 'prompts']
function parsePanel(raw: unknown): SettingsPanel {
const value = String(raw || '')
@@ -443,8 +444,7 @@ const activePanel = computed({
const navItems = computed(() => {
const items: Array<{ id: SettingsPanel; label: string }> = [
{ id: 'gpu', label: 'GPU' },
{ id: 'studio', label: 'Studio' },
{ id: 'gpu', label: 'GPU & defaults' },
{ id: 'storage', label: 'Storage' }
]
if (authMode.value === 'password') items.push({ id: 'login', label: 'Site login' })