different-ai/openwork · error
Failed to load desktop version metadata (${response.status})
Error message
Failed to load desktop version metadata (${response.status}). What it means
loadDesktopVersionOptions fetches GET /v1/app-version (12s timeout) to populate desktop version settings, and throws this error for any non-ok response when the payload carries no specific message. The settings screen cannot show available desktop versions.
Source
Thrown at ee/apps/den-web/app/(den)/dashboard/_components/org-settings-screen.tsx:312
setDomainEditModeEnabled(false);
}, [orgContext]);
useEffect(() => {
let cancelled = false;
async function loadDesktopVersionOptions() {
setDesktopVersionOptionsBusy(true);
setDesktopVersionOptionsError(null);
try {
const { response, payload } = await requestJson(
"/v1/app-version",
{ method: "GET" },
12000,
);
if (!response.ok) {
throw new Error(
getErrorMessage(
payload,
`Failed to load desktop version metadata (${response.status}).`,
),
);
}
const metadata = getDesktopVersionMetadata(payload);
if (!metadata) {
throw new Error("Desktop version metadata was incomplete.");
}
if (cancelled) {
return;
}
setDesktopVersionOptions(metadata.publishedDesktopVersions);
setDesktopVersionRange({View on GitHub (pinned to 2b7df46e8a)
Solutions
- Check the status: 404 → confirm the server supports /v1/app-version and upgrade a self-hosted instance, 401 → re-sign-in, 5xx → check den-api/version-service logs
- Retry after confirming Den is fully deployed and healthy
- Verify network/proxy rules allow the request to reach the Den API
- If only this panel fails, fall back to default version options and report the server issue
Defensive patterns
Strategy: fallback
Validate before calling
const session = await fetch('/v1/session');
if (!session.ok) { redirectToSignIn(); return; } // avoid a guaranteed 401 on /v1/app-version Try / catch
try {
const options = await loadDesktopVersionOptions(signal);
applyVersionOptions(options);
} catch (err) {
const msg = err instanceof Error ? err.message : '';
if (msg.includes('(404)')) console.warn('server does not expose /v1/app-version; using defaults');
applyDefaultVersionOptions();
} Prevention
- Fall back to default/desktop-provided version options when metadata is unavailable
- Detect older self-hosted servers via a capability probe before calling newer endpoints
- Handle 401 globally with re-auth instead of failing the settings screen
- Keep the 12s timeout and show a non-blocking warning rather than a hard failure
When it happens
Trigger: Non-2xx from /v1/app-version: 401 expired Den session, 404 route absent on an older self-hosted server, 5xx from the version-metadata service, or a gateway 502/504 during a Den deploy.
Common situations: Self-hosted Den server older than the app-version endpoint; org settings screen opened with an expired session; version-metadata backend or its storage temporarily down; network egress blocked in a restricted environment.
Understand the failure class
Background: "API error: {status}" and "HTTP 401/403/404/429/5xx" errors: non-2xx HTTP responses explained — this error's family across 27 libraries.
Related errors
- Failed to load desktop policies (${response.status}).
- Could not load egress diagnostics (${response.status}).
- Egress diagnostic could not start (${response.status}).
- Failed to load inference settings (${response.status}).
- Failed to load dashboards (${response.status}).
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/e9685372dd5be3d1.
Report an issue: GitHub.