Let text-to-video generate without a still: Still/Text lives on the Video card, and Text mode skips the required input image.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Towsty
2026-09-06 07:35:42 -05:00
co-authored by Cursor
parent 4dccaac6d3
commit d4b49df05a
2 changed files with 62 additions and 37 deletions
+28
View File
@@ -38,6 +38,26 @@
</button>
</div>
<p v-else class="border-t border-white/10 px-4 py-2 text-xs text-zinc-500">MiniMax H3</p>
<div class="grid grid-cols-2 border-t border-white/10">
<button
type="button"
class="border-r border-white/10 px-3 py-2.5 text-left text-sm transition"
:class="engineBtnClass(current === 'video' && videoStart === 'still')"
@click="pickStart('still')"
>
<span class="block font-semibold">Still</span>
<span class="text-xs opacity-80">Image to video</span>
</button>
<button
type="button"
class="px-3 py-2.5 text-left text-sm transition"
:class="engineBtnClass(current === 'video' && videoStart === 'text')"
@click="pickStart('text')"
>
<span class="block font-semibold">Text</span>
<span class="text-xs opacity-80">No start still</span>
</button>
</div>
</div>
<div
@@ -123,11 +143,13 @@ const props = withDefaults(defineProps<{
current: 'video' | 'image' | 'music'
ltxEnabled?: boolean
videoEngine?: 'minimax' | 'ltx'
videoStart?: 'still' | 'text'
imageEngine?: 'flux' | 'krea'
musicEngine?: 'ace' | 'yue'
}>(), {
ltxEnabled: false,
videoEngine: 'minimax',
videoStart: 'still',
imageEngine: 'flux',
musicEngine: 'ace'
})
@@ -135,6 +157,7 @@ const props = withDefaults(defineProps<{
const emit = defineEmits<{
select: [kind: 'video' | 'image']
'video-engine': [engine: 'minimax' | 'ltx']
'video-start': [start: 'still' | 'text']
'image-engine': [engine: 'flux' | 'krea']
'music-engine': [engine: 'ace' | 'yue']
}>()
@@ -149,6 +172,11 @@ function pickVideo(engine: 'minimax' | 'ltx') {
if (props.current !== 'video') emit('select', 'video')
}
function pickStart(start: 'still' | 'text') {
emit('video-start', start)
if (props.current !== 'video') emit('select', 'video')
}
function pickImage(engine: 'flux' | 'krea') {
emit('image-engine', engine)
if (props.current !== 'image') emit('select', 'image')