diff --git a/public/s/css/upload.css b/public/s/css/upload.css
index 0544dd6..b36643e 100644
--- a/public/s/css/upload.css
+++ b/public/s/css/upload.css
@@ -1652,39 +1652,3 @@
}
@keyframes uutShimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
-
-/* ── Completion states (inline, auto-dismiss) ────── */
-.uut-ok { color: #51cf66; font-size: 10px; flex-shrink: 0; }
-.uut-err { color: #ff5050; font-size: 10px; flex-shrink: 0; }
-
-.uut-job-row--done { align-items: center; }
-
-.uut-job--success .uut-bar-fill,
-.uut-bar-fill--ok {
- background: #51cf66;
- background-image: none;
- animation: none;
-}
-
-.uut-job--error .uut-bar-fill,
-.uut-bar-fill--err {
- background: #ff5050;
- background-image: none;
- animation: none;
-}
-
-.uut-stage--ok { color: #51cf66; }
-.uut-stage--err { color: #ff5050; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 180px; display: block; }
-
-.uut-link {
- font-size: 0.69rem;
- color: var(--accent);
- text-decoration: none;
- opacity: 0.85;
- white-space: nowrap;
- transition: opacity 0.15s;
- margin-left: 5px;
-}
-.uut-link:hover { opacity: 1; text-decoration: underline; }
-
-
diff --git a/public/s/js/upload.js b/public/s/js/upload.js
index 6635a6a..b212c97 100644
--- a/public/s/js/upload.js
+++ b/public/s/js/upload.js
@@ -113,41 +113,6 @@ window.escapeHtmlUpload = window.escapeHtmlUpload || ((unsafe) => {
}
};
- const _renderDone = (jobId, success, itemId, errMsg) => {
- const list = _$('uut-active-list');
- if (!list) return;
- const row = list.querySelector(`[data-jid="${CSS.escape(jobId)}"]`);
- if (!row) return;
- const t = i18n();
- const url = window.escapeHtmlUpload(_active.get(jobId)?.url || '');
-
- if (success) {
- row.classList.add('uut-job--success');
- const linkText = t.url_tracker_view || 'View →';
- const link = itemId ? ` ${window.escapeHtmlUpload(linkText)}` : '';
- const completeText = t.url_tracker_complete || 'Complete!';
- row.innerHTML = `
-
-
-
${url}
-
${window.escapeHtmlUpload(completeText)}${link}
-
-
- `;
- } else {
- row.classList.add('uut-job--error');
- const safeErr = window.escapeHtmlUpload(errMsg || t.url_tracker_failed || 'Upload failed');
- row.innerHTML = `
-
- `;
- }
- };
-
// ── Polling ───────────────────────────────────────────────────────────────
const _stopPoll = (jobId) => {
const j = _active.get(jobId);
@@ -179,7 +144,7 @@ window.escapeHtmlUpload = window.escapeHtmlUpload || ((unsafe) => {
data: state.error ? { msg: state.error } : null
});
}
- }, 2000);
+ }, 500);
return;
}
} catch {}
@@ -196,12 +161,10 @@ window.escapeHtmlUpload = window.escapeHtmlUpload || ((unsafe) => {
_stopPoll(jobId);
_broadcast({ type: 'job_resolved', jobId, notif });
- const success = notif.type === 'upload_success';
- const itemId = notif.item_id || null;
- const errMsg = notif.data?.msg || 'Upload failed';
-
- _renderDone(jobId, success, itemId, errMsg);
- _sync(); // update badge count
+ // Fade row out and remove — no lingering done state
+ const row = _$('uut-active-list')?.querySelector(`[data-jid="${CSS.escape(jobId)}"]`);
+ if (row) { row.classList.add('uut-job--fading'); setTimeout(() => row.remove(), 300); }
+ setTimeout(() => { _active.delete(jobId); _sync(); }, 350);
};
// ── Public API ────────────────────────────────────────────────────────────
@@ -209,8 +172,6 @@ window.escapeHtmlUpload = window.escapeHtmlUpload || ((unsafe) => {
if (!jobId) jobId = `local_${Date.now()}`;
_ensurePanel();
_closed = false;
- // Clean up any stale resolved entries from a previous session
- for (const [id, j] of _active) { if (j.resolved) _active.delete(id); }
_active.set(jobId, { url, percent: 0, stage: 'queued', speed: null, eta: null, resolved: false, pollTimer: null });
_renderJob(jobId);
_sync();
@@ -259,9 +220,9 @@ window.escapeHtmlUpload = window.escapeHtmlUpload || ((unsafe) => {
const job = _active.get(data.jobId);
if (!job?._remote) break;
job.resolved = true;
- const n = data.notif || {};
- _renderDone(data.jobId, n.type === 'upload_success', n.item_id || null, n.data?.msg || 'Upload failed');
- _sync();
+ const row = _$('uut-active-list')?.querySelector(`[data-jid="${CSS.escape(data.jobId)}"]`);
+ if (row) { row.classList.add('uut-job--fading'); setTimeout(() => row.remove(), 300); }
+ setTimeout(() => { _active.delete(data.jobId); _sync(); }, 350);
break;
}
}