From 2742f1fa473d7e0fbe5c40144570f06e8f5c515f Mon Sep 17 00:00:00 2001 From: BoulderBadgeDad Date: Sun, 7 Jun 2026 22:53:47 -0700 Subject: [PATCH] Import UI: show per-file rejection reasons in the processing window (#804) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CubeComming had to dig through app.log to learn WHY a file failed ("integrity check failed: Duration mismatch ..."). The reason was already returned in the singles/process `errors` array and carried on the queue entry — the window just showed "Failed" with no detail. Now each failed file's reason renders under its row (red, left-bordered, with a title tooltip for the full text). Pure presentation of data already present; no API change. Vite build clean. --- .../routes/import/-ui/import-page.module.css | 23 +++++++++++++++++++ webui/src/routes/import/-ui/import-page.tsx | 9 ++++++++ 2 files changed, 32 insertions(+) diff --git a/webui/src/routes/import/-ui/import-page.module.css b/webui/src/routes/import/-ui/import-page.module.css index d7fd667d..0d3c13c5 100644 --- a/webui/src/routes/import/-ui/import-page.module.css +++ b/webui/src/routes/import/-ui/import-page.module.css @@ -769,6 +769,29 @@ margin-top: 2px; } +/* Per-file rejection reasons (quarantine / integrity / match failures) so the + "why" shows in the window, not just in the log (#804). */ +.importPageQueueErrors { + list-style: none; + margin: 4px 0 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 2px; +} + +.importPageQueueErrors li { + font-size: 11px; + line-height: 1.35; + color: #ff6b6b; + background: rgba(255, 107, 107, 0.08); + border-left: 2px solid rgba(255, 107, 107, 0.5); + padding: 2px 6px; + border-radius: 3px; + overflow: hidden; + text-overflow: ellipsis; +} + .importPageQueueProgress { width: 120px; flex-shrink: 0; diff --git a/webui/src/routes/import/-ui/import-page.tsx b/webui/src/routes/import/-ui/import-page.tsx index a9483c3e..e519f32b 100644 --- a/webui/src/routes/import/-ui/import-page.tsx +++ b/webui/src/routes/import/-ui/import-page.tsx @@ -160,6 +160,15 @@ function ImportQueueItem({ entry }: { entry: ImportQueueEntry }) {
{entry.label}
{entry.sublabel}
+ {entry.errors.length > 0 && ( + + )}