Keep Enhance + Generate as one queue row with shared progress.
The PE stage now stays on the same jobId so the header and queue badge agree, and jobs behind it do not promote when enhance finishes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -302,6 +302,14 @@
|
||||
<span class="left"><span class="dot" aria-hidden="true" />{{ card.statusLabel }}</span>
|
||||
<button v-if="card.cancelable" type="button" class="kebab" aria-label="Cancel job" @click.stop="cancel(card.job)">⋮</button>
|
||||
</div>
|
||||
<div v-if="card.progress" class="job-progress" :data-indeterminate="card.progress.indeterminate ? 'true' : undefined">
|
||||
<progress
|
||||
class="job-progress-bar"
|
||||
max="100"
|
||||
:value="card.progress.indeterminate ? undefined : card.progress.percent"
|
||||
/>
|
||||
<span v-if="card.elapsed != null" class="job-elapsed">{{ card.elapsed }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<p v-if="!queueCards.length" class="px-1 text-[var(--type-sm)] text-[var(--muted)]">No active jobs</p>
|
||||
</div>
|
||||
@@ -374,7 +382,7 @@ import {filterLorasForStudio,filterLorasForUse} from '~/utils/loras'
|
||||
import {sectionsFrom} from '~/shared/studio2/contracts.mjs'
|
||||
import {aspectOptions,resolveSize,bindClip,restoreAll,useAsHero,useAsSource,hydrateStudio2Job} from '~/shared/studio2/input.mjs'
|
||||
import {folderAssets,newestOutput,assetLabel,reconcileSelection,previewHidden} from '~/shared/studio2/viewer.mjs'
|
||||
import {queueJobs} from '~/shared/studio2/queue-view.mjs'
|
||||
import {queueJobs,jobStageLabel,jobProgressView,elapsedSeconds} from '~/shared/studio2/queue-view.mjs'
|
||||
import {gpuStatus} from '~/shared/studio2/status.mjs'
|
||||
import {applyUploadedStill} from '~/shared/studio2/upload.mjs'
|
||||
import {defaultNegatives,parseBatch} from '~/shared/studio2/styles.mjs'
|
||||
@@ -534,6 +542,7 @@ const slotPairHint=computed(()=>{
|
||||
})
|
||||
const queueCards=computed(()=>{
|
||||
const cards:any[]=[]
|
||||
const now=Date.now()
|
||||
for(const job of benchJobs.value){
|
||||
const action=job.request?.promptSections?.action || 'Job'
|
||||
const eng=job.request?.engine==='ltx'?'LTX':job.request?.engine==='krea'?'Krea 2':job.request?.engine==='qwen21'?'Qwen 2.1':job.request?.engine==='minimax'?'MiniMax H3':'Klein'
|
||||
@@ -541,6 +550,8 @@ const queueCards=computed(()=>{
|
||||
const modeLabel=mode.charAt(0).toUpperCase()+mode.slice(1)
|
||||
const aspect=job.request?.settings?.aspect || 'auto'
|
||||
const state=job.state==='waiting'?'queued':job.state
|
||||
const secs=elapsedSeconds(job,now)
|
||||
const progress=jobProgressView(job)
|
||||
cards.push({
|
||||
id:job.id,
|
||||
job,
|
||||
@@ -548,7 +559,9 @@ const queueCards=computed(()=>{
|
||||
title:action.slice(0,72),
|
||||
meta:`${modeLabel} · ${eng} · ${aspect}`,
|
||||
state,
|
||||
statusLabel:state==='queued'?'Queued':state==='rendering'||state==='submitting'||state==='waking'||state==='saving'?'Running':state==='complete'?'Ready':state,
|
||||
statusLabel:jobStageLabel(state),
|
||||
progress,
|
||||
elapsed:secs>0?`${Math.floor(secs/60)}m ${secs%60}s`:'',
|
||||
cancelable:!['complete','failed','cancelled'].includes(job.state)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user