From 8ac0e05b15e5ac5fe7f3447dc1cf2c4fe731f093 Mon Sep 17 00:00:00 2001 From: xpltd Date: Thu, 19 Mar 2026 06:47:55 -0500 Subject: [PATCH] Fix table overflow, clickable source URLs, duplicate preview Table overflow fix: - table-layout: fixed prevents columns expanding beyond max-width - min-width: 0 on flex children ensures text-overflow works - Long filenames now properly truncate with ellipsis Clickable source URLs: - Name column is now an link to the original source URL - Opens in new tab (target=_blank, rel=noopener) - Styled to inherit text color, underline + accent on hover - @click.stop prevents row selection interference Duplicate preview box fix: - When urlInfo.type === 'unknown', urlInfo is now set to null - Previously both the preview box ('VIDEO' badge) and error message showed simultaneously. Now only the error message appears. --- frontend/src/components/DownloadTable.vue | 23 ++++++++++++++++++++--- frontend/src/components/UrlInput.vue | 1 + 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/DownloadTable.vue b/frontend/src/components/DownloadTable.vue index cf7ed2c..1040fd3 100644 --- a/frontend/src/components/DownloadTable.vue +++ b/frontend/src/components/DownloadTable.vue @@ -192,13 +192,20 @@ async function clearJob(jobId: string): Promise { - - + + {{ displayName(job) }} - + @@ -298,6 +305,7 @@ async function clearJob(jobId: string): Promise { width: 100%; border-collapse: collapse; font-size: var(--font-size-sm); + table-layout: fixed; } .download-table thead { @@ -356,6 +364,14 @@ async function clearJob(jobId: string): Promise { align-items: center; gap: var(--space-sm); overflow: hidden; + min-width: 0; + color: inherit; + text-decoration: none; +} + +a.name-with-icon:hover .name-text { + text-decoration: underline; + color: var(--color-accent-primary, #00a8ff); } .media-icon { @@ -368,6 +384,7 @@ async function clearJob(jobId: string): Promise { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + min-width: 0; } .col-status { width: 100px; } diff --git a/frontend/src/components/UrlInput.vue b/frontend/src/components/UrlInput.vue index 1ef6894..023196f 100644 --- a/frontend/src/components/UrlInput.vue +++ b/frontend/src/components/UrlInput.vue @@ -195,6 +195,7 @@ function handlePaste(): void { // Check if URL yielded anything useful if (urlInfo.value?.type === 'unknown') { analyzeError.value = 'No downloadable media found at this URL.' + urlInfo.value = null } else if (!urlInfo.value && !extractError.value) { analyzeError.value = 'Could not reach this URL. Check the address and try again.' }