From d1139dfab0556b00d99df28b72ba708b23eacafc Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Tue, 6 Jan 2026 15:53:50 +0000 Subject: [PATCH] Changes --- src/components/dev/ApiDevTools.tsx | 75 ++++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 10 deletions(-) diff --git a/src/components/dev/ApiDevTools.tsx b/src/components/dev/ApiDevTools.tsx index b17715f..aa28839 100644 --- a/src/components/dev/ApiDevTools.tsx +++ b/src/components/dev/ApiDevTools.tsx @@ -11,7 +11,9 @@ interface ApiLog { url: string; requestBody?: unknown; status?: number; + statusText?: string; responseBody?: unknown; + responseHeaders?: Record; duration?: number; error?: string; } @@ -79,6 +81,12 @@ window.fetch = async function (input, init) { const response = await originalFetch.apply(this, [input, init]); const duration = Math.round(performance.now() - start); + // Extract response headers + const responseHeaders: Record = {}; + response.headers.forEach((value, key) => { + responseHeaders[key] = value; + }); + // Clone response to read body const cloned = response.clone(); let responseBody: unknown; @@ -90,7 +98,9 @@ window.fetch = async function (input, init) { updateApiLog(id, { status: response.status, + statusText: response.statusText, responseBody, + responseHeaders, duration, }); @@ -225,11 +235,37 @@ export default function ApiDevTools() { {selectedLog ? (
+ {/* Status & URL Summary */} +
+ + {selectedLog.method} + + {selectedLog.status && ( + = 400 ? 'bg-red-900/50 text-red-300' : ''}`} + > + {selectedLog.status} {selectedLog.statusText} + + )} + {selectedLog.duration && ( + {selectedLog.duration}ms + )} +
+
URL
{selectedLog.url}
+ {/* Network Error */} + {selectedLog.error && ( +
+
Network Error
+
{selectedLog.error}
+
+ )} + {selectedLog.requestBody && (
Request Body
@@ -239,20 +275,39 @@ export default function ApiDevTools() {
)} - {selectedLog.responseBody && ( + {/* Response Section with Status Context */} + {selectedLog.status && (
-
Response
-
-                    {JSON.stringify(selectedLog.responseBody, null, 2)}
-                  
+
+ Response + {selectedLog.status >= 400 && ( + + Error Response + + )} +
+ {selectedLog.responseBody ? ( +
= 400 ? 'text-red-400 border border-red-800/50' : 'text-blue-400'
+                    }`}>
+                      {JSON.stringify(selectedLog.responseBody, null, 2)}
+                    
+ ) : ( +
No response body
+ )}
)} - {selectedLog.error && ( -
-
Error
-
{selectedLog.error}
-
+ {/* Response Headers (collapsible) */} + {selectedLog.responseHeaders && Object.keys(selectedLog.responseHeaders).length > 0 && ( +
+ + Response Headers ({Object.keys(selectedLog.responseHeaders).length}) + +
+                    {JSON.stringify(selectedLog.responseHeaders, null, 2)}
+                  
+
)}
) : (