Release 0.0.4

Update all skips shadowmount titles. They pass the download policy but
not the install policy (their app slot has no real source medium), so
sweeping them in would burn tens of GB on a download AppInstUtil would
refuse. Single shadowmount downloads via the per-title button still work
for the "pop the disc in later" workflow.
This commit is contained in:
Knutwurst committed 2026-06-24 20:59:47 +02:00
1 parent bffa9b2a3f
commit fb80e5767f
2 files changed
+11 -8

No files matched your search

+1 -1
View File
@@ -1,3 +1,3 @@
#pragma once
#define PATCHDL_VERSION "0.0.3"
#define PATCHDL_VERSION "0.0.4"
+10 -7
View File
@@ -755,17 +755,20 @@ async function saveConfig() {
/* ---------------- actions (data layer) ---------------- */
// Queue a download for every game that currently has an available, allowed
// update. The server tolerates duplicate requests (already-queued/active jobs
// return their existing state), so a second click is harmless. If
// install_after_download is on, the per-job auto-install pipeline kicks in
// once each download finishes — no further client action needed.
// Queue a download for every game that has an available update AND could
// actually be installed afterwards. Shadowmounts pass isDownloadAllowed but
// fail isInstallAllowed (their app slot has no real source medium), so a
// sweep would otherwise pull tens of GB that AppInstUtil will refuse — the
// user picks those up by hand when the disc is ready. The server tolerates
// duplicate requests, so a second click is harmless. If install_after_download
// is on, the per-job auto-install pipeline kicks in once each download
// finishes — no further client action needed.
async function updateAll() {
const targets = state.games.filter((g) =>
g.status === "available" && isDownloadAllowed(g) &&
g.status === "available" && isInstallAllowed(g) &&
!g.downloading && !g.downloaded);
if (!targets.length) {
showToast("No updates to queue.");
showToast("No installable updates to queue.");
return;
}
showToast(`Queueing ${targets.length} update${targets.length === 1 ? "" : "s"}…`);