diff --git a/src/components/sidebar/tabs/QueueSidebarTab.vue b/src/components/sidebar/tabs/QueueSidebarTab.vue index a7e8b387a2..12eb3df08b 100644 --- a/src/components/sidebar/tabs/QueueSidebarTab.vue +++ b/src/components/sidebar/tabs/QueueSidebarTab.vue @@ -200,6 +200,30 @@ const menuTargetTask = ref(null) const menuTargetNode = ref(null) const menuItems = computed(() => { const items: MenuItem[] = [ + { + label: t('g.copyJobId'), + icon: 'pi pi-copy', + command: async () => { + if (menuTargetTask.value) { + try { + await navigator.clipboard.writeText(menuTargetTask.value.promptId) + toast.add({ + severity: 'success', + summary: t('g.copied'), + detail: t('g.jobIdCopied'), + life: 2000 + }) + } catch (err) { + toast.add({ + severity: 'error', + summary: t('g.error'), + detail: t('g.failedToCopyJobId'), + life: 3000 + }) + } + } + } + }, { label: t('g.delete'), icon: 'pi pi-trash', diff --git a/src/locales/en/main.json b/src/locales/en/main.json index 5c07152cf2..9d5f1ae840 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -134,6 +134,10 @@ "title": "Title", "edit": "Edit", "copy": "Copy", + "copyJobId": "Copy Job ID", + "copied": "Copied", + "jobIdCopied": "Job ID copied to clipboard", + "failedToCopyJobId": "Failed to copy job ID", "imageUrl": "Image URL", "clear": "Clear", "clearAll": "Clear all",