{"record":{"id":"ef0843b08235101f","repo":"langgenius/dify","slug":"failed-to-fetch-repository-releases","errorCode":null,"errorMessage":"Failed to fetch repository releases","messagePattern":"Failed to fetch repository releases","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"web/app/components/plugins/install-plugin/hooks.ts","lineNumber":25,"sourceCode":"  const parts = downloadUrl.split('/')\n  return parts[parts.length - 1]\n}\n\nconst formatReleases = (releases: any) => {\n  return releases.map((release: any) => ({\n    tag_name: release.tag,\n    assets: release.assets.map((asset: any) => ({\n      browser_download_url: asset.downloadUrl,\n      name: normalizeAssetName(asset.downloadUrl),\n    })),\n  }))\n}\n\nexport const fetchReleases = async (owner: string, repo: string) => {\n  try {\n    // Fetch releases without authentication from client\n    const res = await fetch(`https://ungh.cc/repos/${owner}/${repo}/releases`)\n    if (!res.ok) throw new Error('Failed to fetch repository releases')\n    const data = await res.json()\n    return formatReleases(data.releases)\n  } catch (error) {\n    if (error instanceof Error) {\n      toast.error(error.message)\n    } else {\n      toast.error('Failed to fetch repository releases')\n    }\n    return []\n  }\n}\n\nexport const checkForUpdates = (\n  fetchedReleases: GitHubRepoReleaseResponse[],\n  currentVersion: string,\n) => {\n  let needUpdate = false\n  const toastProps: { type?: 'success' | 'error' | 'info' | 'warning'; message: string } = {","sourceCodeStart":7,"sourceCodeEnd":43,"githubUrl":"https://github.com/langgenius/dify/blob/ef8544b173fd6cd7a8e71df2cab576e52bebbfbc/web/app/components/plugins/install-plugin/hooks.ts#L7-L43","documentation":"Error \"Failed to fetch repository releases\" thrown in langgenius/dify.","triggerScenarios":"Thrown at web/app/components/plugins/install-plugin/hooks.ts:25 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"ef8544b173fd6cd7a8e71df2cab576e52bebbfbc","analyzedAt":"2026-08-12T05:15:17.394Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}