fix: surface real network cause on Gitea issue creation failure (v0.51.4)
A thrown fetch error (DNS failure, connection refused, timeout) never reached the res.ok branch, so its actual cause was lost — err.message alone is often just "fetch failed" with the real reason nested in err.cause. Now logs the full cause server-side and folds it into the error returned to the admin support view's tooltip. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,11 @@
|
||||
|
||||
All notable changes to Epicure are documented here. This file is mirrored in-app at `/changelog` (and in the admin dashboard) via `apps/web/lib/changelog.ts` — update both together.
|
||||
|
||||
## 0.51.4 — 2026-07-19 12:50
|
||||
|
||||
### Fixed
|
||||
- Gitea issue creation failures now log the real network-level cause server-side (DNS/connection/timeout, not just "fetch failed") and surface a more specific message in the admin support view's tooltip.
|
||||
|
||||
## 0.51.3 — 2026-07-19 12:35
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Mirrors CHANGELOG.md at the repo root — update both together.
|
||||
export const APP_VERSION = "0.51.3";
|
||||
export const APP_VERSION = "0.51.4";
|
||||
|
||||
export type ChangelogEntry = {
|
||||
version: string;
|
||||
@@ -11,6 +11,13 @@ export type ChangelogEntry = {
|
||||
};
|
||||
|
||||
export const CHANGELOG: ChangelogEntry[] = [
|
||||
{
|
||||
version: "0.51.4",
|
||||
date: "2026-07-19 12:50",
|
||||
fixed: [
|
||||
"Gitea issue creation failures now log the real network-level cause server-side (DNS/connection/timeout, not just \"fetch failed\") and surface a more specific message in the admin support view's tooltip.",
|
||||
],
|
||||
},
|
||||
{
|
||||
version: "0.51.3",
|
||||
date: "2026-07-19 12:35",
|
||||
|
||||
+10
-1
@@ -50,6 +50,15 @@ export async function createGiteaIssue(opts: {
|
||||
const issue = (await res.json()) as { html_url?: string };
|
||||
return { url: issue.html_url ?? null, error: issue.html_url ? null : "Gitea response had no html_url" };
|
||||
} catch (err) {
|
||||
return { url: null, error: err instanceof Error ? err.message : "Unknown error" };
|
||||
// A thrown fetch error (DNS failure, connection refused, timeout, TLS
|
||||
// error) never reaches the res.ok branch above, so its real cause would
|
||||
// otherwise be lost — err.message alone is often just "fetch failed"
|
||||
// with the actual reason nested in err.cause. Log server-side with the
|
||||
// full cause chain, and fold a short form into the returned message so
|
||||
// it also shows up in the admin support view's tooltip, not just logs.
|
||||
const cause = err instanceof Error && err.cause instanceof Error ? err.cause.message : undefined;
|
||||
const message = err instanceof Error ? err.message : "Unknown error";
|
||||
console.error("[gitea] createGiteaIssue failed", { baseUrl, repo, message, cause });
|
||||
return { url: null, error: cause ? `${message}: ${cause}` : message };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@epicure/web",
|
||||
"version": "0.51.3",
|
||||
"version": "0.51.4",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "epicure",
|
||||
"version": "0.51.3",
|
||||
"version": "0.51.4",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "pnpm --filter web dev",
|
||||
|
||||
Reference in New Issue
Block a user