fix(update): 30-min download timeout + tidier progress number
All checks were successful
Build Archipelago ISO (dev) / build-iso (push) Successful in 22m26s
All checks were successful
Build Archipelago ISO (dev) / build-iso (push) Successful in 22m26s
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) <noreply@anthropic.com>
This commit is contained in:
@@ -157,7 +157,8 @@ pub async fn download_update(data_dir: &Path) -> Result<DownloadProgress> {
|
||||
.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")?;
|
||||
|
||||
|
||||
@@ -110,10 +110,10 @@
|
||||
<div class="w-full h-3 bg-white/10 rounded-full overflow-hidden mb-2">
|
||||
<div
|
||||
class="h-full bg-orange-400 rounded-full transition-all duration-500"
|
||||
:style="{ width: downloadPercent + '%' }"
|
||||
:style="{ width: downloadPercentFormatted + '%' }"
|
||||
></div>
|
||||
</div>
|
||||
<p class="text-xs text-white/60">{{ t('systemUpdate.percentComplete', { percent: downloadPercent }) }}</p>
|
||||
<p class="text-xs text-white/60">{{ t('systemUpdate.percentComplete', { percent: downloadPercentFormatted }) }}</p>
|
||||
</div>
|
||||
|
||||
<!-- Applying -->
|
||||
@@ -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')
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
"version": "1.7.0-alpha",
|
||||
"release_date": "2026-04-20",
|
||||
"changelog": [
|
||||
"Fixes update.download hard-fail on nodes that have ~/archy checked out (the git-path fleet class: .228, .116). Root cause: handle_update_check's git path returned update_available=true + update_method=\"git\" but never populated state.available_update, so update.download / update.apply RPC calls errored with 'No update available to download' even though the UI advertised one.",
|
||||
"Frontend: SystemUpdate.vue now branches on update_method. When method==\"git\", renders a single 'Pull & Rebuild' action that calls update.git-apply (which runs ~/archy/scripts/self-update.sh: git pull → cargo build --release → frontend rebuild → systemctl restart archipelago). Manifest-path nodes continue to use the existing Download → Apply pipeline. Confirm modal and i18n strings (en + es) added for the git path.",
|
||||
"Forces OTA trigger for nodes already on 1.6.0-alpha (.198, .253) that otherwise saw 'I'm at manifest.version, nothing to do' and skipped the refreshed 1.6 artifacts.",
|
||||
"Container reconciler: scripts/reconcile-containers.sh no longer creates missing containers from the canonical tier spec. SPEC_OPTIONAL now defaults to true in container-specs.sh, so reconcile is strictly a REPAIR tool (fix ownership, restart crashed, recreate on drift). Containers come from exactly two sources: first-boot-containers.sh (baseline filebrowser on unbundled installs) and the package install RPC (every other app). Fixes the bug where fresh unbundled installs woke up 10 minutes after first boot with archy-mempool-db and archy-btcpay-db silently created by the reconcile timer.",
|
||||
"filebrowser spec: now declares SPEC_NETWORK=archy-net (matching what first-boot-containers.sh creates) and the filebrowser-data volume. Without this the reconciler would see network drift (bridge≠archy-net) and churn the container on every cycle, dropping the archy-net DNS registration the backend uses to reach it.",
|
||||
"VPN: added vpn::restore_wg_peers() that reads data_dir/nostr-vpn/peers/*.json on startup and re-pushes each peer into the wg0 kernel state via `archipelago-wg add-peer`. Fixes the silent-drop-on-reboot bug: kernel peer state is ephemeral, the add-peer RPC only persisted to JSON, and nothing replayed them at boot. Nodes like .198 came back up after reboot with wg0 listening but zero peers."
|
||||
"Your VPN peers now come back automatically after a reboot. No more rescanning QR codes on your phone or laptop.",
|
||||
"Fresh installs stay lean — only File Browser is included out of the box. Other apps wait in the Marketplace until you pick them.",
|
||||
"Update downloads no longer give up early on slow connections. Big components now get the time they need to finish.",
|
||||
"The download progress number is now clean (like 45.23%) instead of 45.270894%.",
|
||||
"One-click 'Pull & Rebuild' button works for nodes that update from source (the development path), not just the standard download path.",
|
||||
"File Browser stops rebooting itself every few hours — it's now set up so the update checker leaves it alone once it's healthy."
|
||||
],
|
||||
"components": [
|
||||
{
|
||||
@@ -15,16 +15,16 @@
|
||||
"current_version": "1.6.0-alpha",
|
||||
"new_version": "1.7.0-alpha",
|
||||
"download_url": "https://git.tx1138.com/lfg2025/archy/raw/branch/main/releases/v1.7.0-alpha/archipelago",
|
||||
"sha256": "6c178a76bf69853b00250f89e9f0c4974f0ecad9d3c10f328cb9661f5f3582cc",
|
||||
"size_bytes": 40361912
|
||||
"sha256": "d85a71c57b737a51d0f80c63da0da0f3472b03cb5cbbecae7808aaaaa17982f4",
|
||||
"size_bytes": 40360936
|
||||
},
|
||||
{
|
||||
"name": "archipelago-frontend-1.7.0-alpha.tar.gz",
|
||||
"current_version": "1.6.0-alpha",
|
||||
"new_version": "1.7.0-alpha",
|
||||
"download_url": "https://git.tx1138.com/lfg2025/archy/raw/branch/main/releases/v1.7.0-alpha/archipelago-frontend-1.7.0-alpha.tar.gz",
|
||||
"sha256": "cbadd0510362fc9afdc747cba9c70f76315516c2f0f4536044d718aaddcc46fd",
|
||||
"size_bytes": 76982017
|
||||
"sha256": "8adcdacf4190ae52dd9ed4f447aed1d4c332f1c86c4f5b8919e1a83a02e687f6",
|
||||
"size_bytes": 76986852
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user