-
-
+ UI
+
+
+
+
+ Text
+
+
@@ -47,6 +56,15 @@ export function ResultsPane({ result, isExecuting }: ResultsPaneProps) {
{result.timestamp.toLocaleTimeString()}
)}
+ {onReload && (
+
}
+ />
+ )}
diff --git a/packages/inspector/src/components/ToolsPanel.css b/packages/inspector/src/components/ToolsPanel.css
index 266416a..b1b728f 100644
--- a/packages/inspector/src/components/ToolsPanel.css
+++ b/packages/inspector/src/components/ToolsPanel.css
@@ -19,7 +19,7 @@
}
.tool-count {
- background: var(--bg-hover);
+ background: rgba(255, 255, 255, 0.1);
padding: 2px 8px;
border-radius: 10px;
font-size: 11px;
@@ -165,7 +165,8 @@
.json-editor {
width: 100%;
- font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
+ monospace;
font-size: 12px;
background: var(--bg-primary);
border: 1px solid var(--border-color);
@@ -240,7 +241,9 @@
}
@keyframes spin {
- to { transform: rotate(360deg); }
+ to {
+ transform: rotate(360deg);
+ }
}
@media (max-width: 1200px) {
diff --git a/packages/inspector/src/components/ToolsPanel.tsx b/packages/inspector/src/components/ToolsPanel.tsx
index e454139..fa748c6 100644
--- a/packages/inspector/src/components/ToolsPanel.tsx
+++ b/packages/inspector/src/components/ToolsPanel.tsx
@@ -1,5 +1,5 @@
import { useState, useEffect } from 'react'
-import { Wrench, Play, ChevronRight, Code2, FileJson } from 'lucide-react'
+import { Wrench, Play, Circle, CircleDot, Code2, FileJson } from 'lucide-react'
import { Button } from './Button'
import type { Tool } from '../App'
import './ToolsPanel.css'
@@ -148,7 +148,7 @@ export function ToolsPanel({
className={`tool-item ${selectedTool?.name === tool.name ? 'selected' : ''}`}
onClick={() => onSelectTool(tool)}
>
-
+ {selectedTool?.name === tool.name ?
:
}
{tool.name}
{tool.description && (
diff --git a/packages/inspector/src/index.css b/packages/inspector/src/index.css
index 2e1f5d1..95fafc9 100644
--- a/packages/inspector/src/index.css
+++ b/packages/inspector/src/index.css
@@ -8,7 +8,6 @@
--bg-primary: #000000;
--bg-secondary: #000000;
--bg-tertiary: #141414;
- --bg-hover: #30363d;
--border-color: #30363d;
--text-primary: #e6edf3;
--text-secondary: #8b949e;
@@ -18,6 +17,7 @@
--accent-red: #f85149;
--accent-orange: #d29922;
--accent-purple: #a371f7;
+ --white: #ffffff;
}
body {
@@ -69,51 +69,7 @@ textarea {
input:focus,
select:focus,
textarea:focus {
- border-color: var(--accent-blue);
-}
-
-/* Button styles */
-button {
- background: var(--bg-tertiary);
- border: 1px solid var(--border-color);
- border-radius: 6px;
- color: var(--text-primary);
- padding: 8px 16px;
- font-size: 14px;
- cursor: pointer;
- transition: background 0.2s, border-color 0.2s;
- display: inline-flex;
- align-items: center;
- gap: 8px;
-}
-
-button:hover {
- background: var(--bg-hover);
-}
-
-button:disabled {
- opacity: 0.5;
- cursor: not-allowed;
-}
-
-button.primary {
- background: var(--accent-blue);
- border-color: var(--accent-blue);
- color: #fff;
-}
-
-button.primary:hover {
- background: #4c9aed;
-}
-
-button.success {
- background: var(--accent-green);
- border-color: var(--accent-green);
- color: #fff;
-}
-
-button.success:hover {
- background: #2ea043;
+ border-color: var(--white);
}
/* Code/mono text */
diff --git a/packages/library/server/bundle.ts b/packages/library/server/bundle.ts
index 7afc4f4..c203830 100644
--- a/packages/library/server/bundle.ts
+++ b/packages/library/server/bundle.ts
@@ -1,10 +1,13 @@
import * as esbuild from 'esbuild';
-// Cache bundled JS per entry path
+// Cache bundled JS per entry path (only used in production)
const bundleCache = new Map();
+// In development mode, skip cache to allow hot-reloading of component changes
+const isDev = process.env.NODE_ENV !== 'production';
+
export async function bundleComponent(entryPath: string): Promise {
- if (bundleCache.has(entryPath)) {
+ if (!isDev && bundleCache.has(entryPath)) {
return bundleCache.get(entryPath)!;
}
@@ -23,6 +26,11 @@ export async function bundleComponent(entryPath: string): Promise {
});
const bundledJS = result.outputFiles[0].text;
- bundleCache.set(entryPath, bundledJS);
+
+ // Only cache in production mode
+ if (!isDev) {
+ bundleCache.set(entryPath, bundledJS);
+ }
+
return bundledJS;
}
\ No newline at end of file