From e8c13371682cf035fa1c245dca7c040cc7baddec Mon Sep 17 00:00:00 2001 From: Alex Cheema <41707476+AlexCheema@users.noreply.github.com> Date: Mon, 23 Feb 2026 10:20:35 -0800 Subject: [PATCH] fix: add download/resume buttons to pending downloads (#1581) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Adds a **resume button** (download icon) to paused pending downloads (those with partial progress) - Adds a **download button** to not-started pending downloads - Both buttons call the existing `startDownload()` function which handles both new downloads and resuming partial ones - Previously, paused downloads only showed a "paused" label with no action, and not-started downloads showed "..." with no way to trigger them ## Test plan - [ ] Build dashboard (`cd dashboard && npm run build`) - [ ] Start exo, navigate to Downloads tab - [ ] Verify paused downloads show a clickable resume (download arrow) icon below the progress bar - [ ] Verify not-started pending downloads show a clickable download icon - [ ] Click both button types and confirm downloads start/resume > Note: Screenshot could not be captured because the dashboard requires the exo backend API to render, and exo has a pre-existing `Keypair.generate()` startup bug on main. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 --- dashboard/src/routes/downloads/+page.svelte | 86 ++++++++++++++++----- 1 file changed, 66 insertions(+), 20 deletions(-) diff --git a/dashboard/src/routes/downloads/+page.svelte b/dashboard/src/routes/downloads/+page.svelte index c0781c19..c69c7635 100644 --- a/dashboard/src/routes/downloads/+page.svelte +++ b/dashboard/src/routes/downloads/+page.svelte @@ -469,11 +469,11 @@ {#if cell.kind === "completed"}
@@ -483,18 +483,18 @@ clip-rule="evenodd" > - {formatBytes(cell.totalBytes)}
{:else if cell.kind === "pending"}
0 - ? `${formatBytes(cell.downloaded)} / ${formatBytes(cell.total)} downloaded` + ? `${formatBytes(cell.downloaded)} / ${formatBytes(cell.total)} downloaded (paused)` : "Download pending"} > {#if cell.downloaded > 0 && cell.total > 0} - {formatBytes(cell.downloaded)} / {formatBytes( cell.total, )}
- paused + startDownload(col.nodeId, row.shardMetadata!)} + title="Resume download on this node" + > + + + + + {:else} + paused + {/if} + {:else if row.shardMetadata} + {:else} ... @@ -568,11 +614,11 @@
{:else if cell.kind === "failed"}
@@ -585,13 +631,13 @@ {#if row.shardMetadata}