From 72124a9fb02c617ae5d1fde25489d93b690365dd Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Mon, 24 Nov 2025 13:03:37 -0800 Subject: [PATCH 1/2] [feat] Improve queue job item UX based on design feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Running jobs now show cancel button at all times (always visible) - Cancel/delete buttons use destructive red styling by default - Changed pending job icon from clock to loader-circle with spin animation - Fixed icon buttons to be square (size-6) instead of rectangular - Added TODO comment for future declarative button config system 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/components/queue/QueueOverlayActive.vue | 2 +- src/components/queue/job/QueueJobItem.vue | 59 ++++++++++++++++++--- src/utils/queueDisplay.ts | 2 +- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/src/components/queue/QueueOverlayActive.vue b/src/components/queue/QueueOverlayActive.vue index 76d339fcc0..abb3ae982f 100644 --- a/src/components/queue/QueueOverlayActive.vue +++ b/src/components/queue/QueueOverlayActive.vue @@ -47,7 +47,7 @@ v-tooltip.top="cancelJobTooltip" type="secondary" size="sm" - class="size-6 bg-secondary-background hover:bg-destructive-background" + class="size-6 bg-destructive-background hover:bg-destructive-background-hover" :aria-label="t('sideToolbar.queueProgressOverlay.interruptAll')" @click="$emit('interruptAll')" > diff --git a/src/components/queue/job/QueueJobItem.vue b/src/components/queue/job/QueueJobItem.vue index 8158c03cf4..5f01fe0d47 100644 --- a/src/components/queue/job/QueueJobItem.vue +++ b/src/components/queue/job/QueueJobItem.vue @@ -82,7 +82,16 @@ :src="iconImageUrl" class="h-full w-full object-cover" /> - + @@ -93,6 +102,23 @@ +
@@ -143,17 +173,33 @@ v-tooltip.top="moreTooltipConfig" type="transparent" size="sm" - class="h-6 transform gap-1 rounded bg-modal-card-button-surface px-1 py-0 text-text-primary transition duration-150 ease-in-out hover:-translate-y-px hover:opacity-95" + class="size-6 transform gap-1 rounded bg-modal-card-button-surface text-text-primary transition duration-150 ease-in-out hover:-translate-y-px hover:opacity-95" :aria-label="t('g.more')" @click.stop="emit('menu', $event)" >
-
+
{{ props.rightText }}
+ + + +
@@ -170,6 +216,7 @@ import QueueAssetPreview from '@/components/queue/job/QueueAssetPreview.vue' import { buildTooltipConfig } from '@/composables/useTooltipConfig' import type { JobState } from '@/types/queue' import { iconForJobState } from '@/utils/queueDisplay' +import { cn } from '@/utils/tailwindUtil' const props = withDefaults( defineProps<{ diff --git a/src/utils/queueDisplay.ts b/src/utils/queueDisplay.ts index 18aee1cb43..d743c1b2fc 100644 --- a/src/utils/queueDisplay.ts +++ b/src/utils/queueDisplay.ts @@ -24,7 +24,7 @@ type JobDisplay = { export const iconForJobState = (state: JobState): string => { switch (state) { case 'pending': - return 'icon-[lucide--clock]' + return 'icon-[lucide--loader-circle]' case 'initialization': return 'icon-[lucide--server-crash]' case 'running': From 8fba5f8914c71dc2c030b3ba6c51881435f2e2b2 Mon Sep 17 00:00:00 2001 From: Benjamin Lu Date: Mon, 24 Nov 2025 13:05:22 -0800 Subject: [PATCH 2/2] [feat] Add rectangular hover area tracking for queue overlay MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Uses useMouse + useElementBounding from VueUse to detect hover over the entire rectangular bounding box of the queue area (actionbar + overlay). This approach is needed because QueueProgressOverlay has pointer-events-none on its wrapper, which would create "holes" in hover detection with standard mouseenter/mouseleave events. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/components/TopMenuSection.vue | 22 +++++++++++++++++-- src/components/queue/QueueProgressOverlay.vue | 11 +++++++--- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/components/TopMenuSection.vue b/src/components/TopMenuSection.vue index 6e683a184d..5e9988cbb7 100644 --- a/src/components/TopMenuSection.vue +++ b/src/components/TopMenuSection.vue @@ -4,7 +4,7 @@ -
+
@@ -40,12 +40,16 @@
- +