From 508f8e1786d66315e776e91880314bbca088e76c Mon Sep 17 00:00:00 2001 From: Dorian Date: Mon, 20 Apr 2026 09:03:24 -0400 Subject: [PATCH] fix(update): 30-min download timeout + tidier progress number MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to 56d4875b, same v1.7.0-alpha shipping band. Backend download timeout bumped from 300s to 1800s (update.rs) with an explicit 30s connect timeout. git.tx1138.com raw-file throughput can sit around 70–80 KB/s, which meant OTA downloads were timing out at ~55% through the 40 MB binary even though the SHA would have matched on a full pull. 30 min gives ample headroom for the worst LAN-to-VPS link we actually hit. Frontend: SystemUpdate.vue now formats downloadPercent with toFixed(2) via a new computed, so the progress card shows "45.23%" instead of "45.270894%". Cosmetic only; the underlying ref still tracks raw floats. Manifest changelog rewritten in user-facing language per the saved feedback — no file paths, function names, or "root cause" phrasing. Artifacts refreshed: binary d85a71c5…982f4 40360936 frontend 8adcdacf…e687f6 76986852 ISO at image-recipe/results/archipelago-installer-unbundled-x86_64.iso (Apr 20 09:00) carries both fixes for fresh installs. Co-Authored-By: Claude Opus 4.7 (1M context) --- core/archipelago/src/update.rs | 3 ++- neode-ui/src/views/SystemUpdate.vue | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/archipelago/src/update.rs b/core/archipelago/src/update.rs index ce9e2021..84768da8 100644 --- a/core/archipelago/src/update.rs +++ b/core/archipelago/src/update.rs @@ -157,7 +157,8 @@ pub async fn download_update(data_dir: &Path) -> Result { .context("Failed to create staging dir")?; let client = reqwest::Client::builder() - .timeout(std::time::Duration::from_secs(300)) + .timeout(std::time::Duration::from_secs(1800)) + .connect_timeout(std::time::Duration::from_secs(30)) .build() .context("Failed to create HTTP client")?; diff --git a/neode-ui/src/views/SystemUpdate.vue b/neode-ui/src/views/SystemUpdate.vue index f7adf433..e15ce108 100644 --- a/neode-ui/src/views/SystemUpdate.vue +++ b/neode-ui/src/views/SystemUpdate.vue @@ -110,10 +110,10 @@
-

{{ t('systemUpdate.percentComplete', { percent: downloadPercent }) }}

+

{{ t('systemUpdate.percentComplete', { percent: downloadPercentFormatted }) }}

@@ -254,6 +254,7 @@ const updateInProgress = ref(false) const statusMessage = ref('') const statusIsError = ref(false) const downloadPercent = ref(0) +const downloadPercentFormatted = computed(() => downloadPercent.value.toFixed(2)) const lastCheckDisplay = computed(() => { if (!lastCheck.value) return t('common.never')