diff --git a/app/src/components/ToolCard.tsx b/app/src/components/ToolCard.tsx
deleted file mode 100644
index 0d9f1b2..0000000
--- a/app/src/components/ToolCard.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { Link } from "react-router-dom"
-import { Terminal } from "lucide-react"
-import type { ProgramSummary } from "@/types"
-import { runnerLabel } from "@/lib/labels"
-
-interface ToolCardProps {
- tool: ProgramSummary
-}
-
-export function ToolCard({ tool }: ToolCardProps) {
- return (
-
-
-
- {tool.id}
-
- {tool.installed && (
-
- installed
-
- )}
-
-
- {tool.description && (
-
{tool.description}
- )}
-
-
- {tool.runner && (
-
-
- {runnerLabel(tool.runner)}
-
- )}
- {tool.version && (
- v{tool.version}
- )}
-
-
- {tool.system_dependencies.length > 0 && (
-
- {tool.system_dependencies.map((dep) => (
-
- {dep}
-
- ))}
-
- )}
-
- )
-}
diff --git a/app/src/pages/ComponentDetail.tsx b/app/src/pages/ProgramDetail.tsx
similarity index 98%
rename from app/src/pages/ComponentDetail.tsx
rename to app/src/pages/ProgramDetail.tsx
index 4a502b0..e086f09 100644
--- a/app/src/pages/ComponentDetail.tsx
+++ b/app/src/pages/ProgramDetail.tsx
@@ -6,7 +6,7 @@ import { DetailHeader } from "@/components/detail/DetailHeader"
import { ConfigPanel } from "@/components/detail/ConfigPanel"
import { ProgramActions, ActionOutputPanel, type ActionOutput } from "@/components/ProgramActions"
-export function ComponentDetailPage() {
+export function ProgramDetailPage() {
useEventStream()
const { name } = useParams<{ name: string }>()
const { data: component, isLoading, error, refetch } = useProgram(name ?? "")
diff --git a/app/src/pages/ComponentRedirect.tsx b/app/src/pages/ProgramRedirect.tsx
similarity index 95%
rename from app/src/pages/ComponentRedirect.tsx
rename to app/src/pages/ProgramRedirect.tsx
index c6aa716..f3f176a 100644
--- a/app/src/pages/ComponentRedirect.tsx
+++ b/app/src/pages/ProgramRedirect.tsx
@@ -1,7 +1,7 @@
import { useParams, Navigate } from "react-router-dom"
import { useComponent } from "@/services/api/hooks"
-export function ComponentRedirect() {
+export function ProgramRedirect() {
const { name } = useParams<{ name: string }>()
const { data: component, isLoading, error } = useComponent(name ?? "")
diff --git a/app/src/pages/Tools.tsx b/app/src/pages/Tools.tsx
deleted file mode 100644
index 9edea79..0000000
--- a/app/src/pages/Tools.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Link } from "react-router-dom"
-import { ArrowLeft } from "lucide-react"
-import { usePrograms } from "@/services/api/hooks"
-import { ToolCard } from "@/components/ToolCard"
-
-export function ToolsPage() {
- const { data: tools, isLoading } = usePrograms("tool")
-
- return (
-
-
-
Back
-
-
-
Tools
-
- CLI utilities installed to PATH via castle and run with uv.
-
-
- {isLoading ? (
-
Loading tools...
- ) : tools?.length ? (
-
- {tools.map((tool) => (
-
- ))}
-
- ) : (
-
No tools registered.
- )}
-
- )
-}
diff --git a/app/src/router/routes.tsx b/app/src/router/routes.tsx
index d28b5a6..b72e471 100644
--- a/app/src/router/routes.tsx
+++ b/app/src/router/routes.tsx
@@ -2,8 +2,8 @@ import { createBrowserRouter } from "react-router-dom"
import { Dashboard } from "@/pages/Dashboard"
import { ServiceDetailPage } from "@/pages/ServiceDetail"
import { ScheduledDetailPage } from "@/pages/ScheduledDetail"
-import { ComponentDetailPage } from "@/pages/ComponentDetail"
-import { ComponentRedirect } from "@/pages/ComponentRedirect"
+import { ProgramDetailPage } from "@/pages/ProgramDetail"
+import { ProgramRedirect } from "@/pages/ProgramRedirect"
import { NodeDetailPage } from "@/pages/NodeDetail"
export const router = createBrowserRouter([
@@ -21,11 +21,11 @@ export const router = createBrowserRouter([
},
{
path: "/programs/:name",
- element: ,
+ element: ,
},
{
path: "/component/:name",
- element: ,
+ element: ,
},
{
path: "/node/:hostname",
diff --git a/app/src/services/api/hooks.ts b/app/src/services/api/hooks.ts
index 9b553d7..83f78c8 100644
--- a/app/src/services/api/hooks.ts
+++ b/app/src/services/api/hooks.ts
@@ -18,7 +18,7 @@ import type {
NodeDetail,
} from "@/types"
-// Legacy compat hook — used by ConfigEditorPage and ComponentRedirect
+// Legacy compat hook — used by ConfigEditorPage and ProgramRedirect
export function useComponent(name: string) {
return useQuery({
queryKey: ["components", name],