Show each extension's own prompt, not only the batch script.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Towsty
2026-08-31 18:45:17 -05:00
co-authored by Cursor
parent 6624fb6f93
commit d4bcf8482e
4 changed files with 23 additions and 4 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
<dl v-if="rows.length" class="mt-2 grid grid-cols-[7.25rem_minmax(0,1fr)] gap-x-3 gap-y-1 text-[11px] leading-snug">
<template v-for="row in rows" :key="row.label">
<dt class="text-zinc-500">{{ row.label }}</dt>
<dd class="min-w-0 break-words text-zinc-300">{{ row.value }}</dd>
<dd class="min-w-0 whitespace-pre-wrap break-words text-zinc-300">{{ row.value }}</dd>
</template>
</dl>
<p v-else class="mt-2 text-[11px] text-zinc-600">{{ empty }}</p>
+12
View File
@@ -1666,6 +1666,12 @@
@blur="saveRename(item)"
>
<p v-else class="min-w-0 flex-1 truncate text-sm font-medium">{{ item.name || item.prompt }}</p>
<PromptPreviewTip
v-if="item.prompt"
:text="item.prompt"
:aria-label="'Copy prompt for ' + (item.name || 'this clip')"
@copy="copyPrompt"
/>
</div>
<p class="truncate text-xs text-zinc-500">{{ clipMetaLine(item) }}</p>
<PermanenceRefStrip
@@ -1839,6 +1845,12 @@
@blur="saveRenameStill(item)"
>
<p v-else class="min-w-0 flex-1 truncate text-sm font-medium">{{ stillTitle(item) }}</p>
<PromptPreviewTip
v-if="item.prompt"
:text="item.prompt"
:aria-label="'Copy prompt for ' + stillTitle(item)"
@copy="copyPrompt"
/>
</div>
<p class="truncate text-xs text-zinc-500">{{ stillMetaLine(item) }}</p>
<div class="mt-1.5 flex flex-wrap items-center gap-3">
+6 -2
View File
@@ -479,8 +479,12 @@ const focusedNavIndex = computed(() => {
return index < 0 ? 0 : index
})
const detailPrompt = computed(() => {
if (focused.value?.kind === 'clip') return focused.value.group?.head.prompt || ''
return focused.value?.stillGroup?.head.prompt || ''
if (focused.value?.kind === 'clip' && focused.value.group) {
const item = focused.value.group.parts.find(part => part.id === focusedPartId.value) || focused.value.group.head
return item.prompt || ''
}
const still = focused.value?.stillGroup?.parts.find(part => part.id === focusedPartId.value) || focused.value?.stillGroup?.head
return still?.prompt || ''
})
const detailMeta = computed(() => {
const entry = focused.value
+4 -1
View File
@@ -141,9 +141,10 @@ export function stillModeLabel(still: { filename?: string; settings?: StillGener
return ''
}
export function stillSettingsRows(still: { width?: number; height?: number; settings?: StillGenerationSettings | null }) {
export function stillSettingsRows(still: { prompt?: string; width?: number; height?: number; settings?: StillGenerationSettings | null }) {
const settings = still.settings
const rows: SettingsRow[] = []
if (still.prompt?.trim()) rows.push({ label: 'Prompt', value: still.prompt.trim() })
const mode = stillModeLabel(still)
if (mode) rows.push({ label: 'Mode', value: mode })
if (!settings) return rows
@@ -201,6 +202,7 @@ function videoWorkflowLabel(workflow?: string) {
}
export function clipSettingsRows(clip: {
prompt?: string
width?: number
height?: number
duration?: number
@@ -218,6 +220,7 @@ export function clipSettingsRows(clip: {
loraStack?: LoraStackItem[]
}) {
const rows: SettingsRow[] = []
if (clip.prompt?.trim()) rows.push({ label: 'Prompt', value: clip.prompt.trim() })
const workflow = videoWorkflowLabel(clip.workflow)
if (workflow) rows.push({ label: 'Workflow', value: workflow })
if (clip.width && clip.height) rows.push({ label: 'Size', value: `${clip.width}×${clip.height}` })