different-ai/openwork · error
Den returned an invalid desktop release inventory.
Error message
Den returned an invalid desktop release inventory.
What it means
After resolving the installed version, the stable-channel manual update check calls resolveFreshStableDesktopUpdate. A null return means Den's desktop release inventory could not be resolved into a usable selection (not merely 'no update' — that would be a valid selection object). The code treats null as an invalid inventory and throws so the UI doesn't silently claim 'up to date' on bad data.
Source
Thrown at apps/app/src/react-app/domains/settings/state/electron-updater-state.ts:402
onReleaseChannelChange(activeReleaseChannel);
await bridge.setChannel?.(activeReleaseChannel);
if (!isCurrentRequest()) return;
}
if (manual && activeReleaseChannel === "stable") {
const channelState = await bridge.getChannel?.();
if (!isCurrentRequest()) return;
const currentVersion = channelState?.currentVersion ?? appVersion;
if (!currentVersion) {
throw new Error("Could not determine the installed OpenWork version.");
}
const selection = await resolveFreshStableDesktopUpdate({
currentVersion,
refreshDesktopConfig,
});
if (!isCurrentRequest()) return;
if (!selection) {
throw new Error("Den returned an invalid desktop release inventory.");
}
if (selection.kind === "blocked") {
setUpdateStatus({
state: "blocked",
lastCheckedAt: Date.now(),
version: selection.latestPublishedVersion,
message: t("settings.update_blocked_org", undefined, {
version: selection.latestPublishedVersion,
}),
});
return;
}
if (selection.kind === "current") {
setUpdateStatus({
state: "idle",
lastCheckedAt: Date.now(),
version: selection.latestPublishedVersion,
});View on GitHub (pinned to 2b7df46e8a)
Solutions
- Retry the update check; transient Den/config fetch failures resolve on retry.
- Verify network connectivity and that the Den/desktop-config endpoint is healthy.
- Check refreshDesktopConfig: ensure it is wired and the cloud config contains valid desktop release entries.
- Inspect the Den release inventory payload for schema changes breaking resolveFreshStableDesktopUpdate.
Example fix
// before
if (!selection) {
throw new Error("Den returned an invalid desktop release inventory.");
}
// after
if (!selection) {
const config = await refreshDesktopConfig();
console.warn("desktop release inventory invalid; config keys:", Object.keys(config ?? {}));
throw new Error("Den returned an invalid desktop release inventory.");
} Defensive patterns
Strategy: retry
Validate before calling
const config = await refreshDesktopConfig();
if (!config || !Array.isArray(config.desktopReleases) || config.desktopReleases.length === 0) {
// skip check; Den inventory not ready
} Try / catch
try {
await checkForUpdates({ manual: true });
} catch (err) {
if (err.message.includes("invalid desktop release inventory")) scheduleUpdateRetry(30_000);
else throw err;
} Prevention
- Cache the last good release inventory and fall back to it when Den returns bad data
- Retry config refresh with backoff before surfacing the error
- Monitor the Den desktop-config endpoint for schema changes
When it happens
Trigger: Manual update check when resolveFreshStableDesktopUpdate returns null: refreshDesktopConfig fails, Den returns malformed/empty desktop release data, or the config fetch is unavailable at that moment.
Common situations: Den server unreachable or returning errors; release channel config not yet synced; malformed desktop-config response after a Den-side change; first launch before cloud config has been fetched.
Related errors
- latest-mac.yml is missing artifact path/url.
- Failed to fetch latest-mac.yml (${response.status} ${respons
- Request timed out.
- Timed out waiting for server health
- Connection lost
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/c5ebeed80970d564.
Report an issue: GitHub.