From c5bbe134e8a19ac864ccbffcd3d912d8f1a02e73 Mon Sep 17 00:00:00 2001 From: "jared-outpost[bot]" Date: Sat, 19 Sep 2026 15:05:03 +0000 Subject: [PATCH] align agent runs route path with sidebar label rename the /containers UI routes to /runs so the address bar matches the "Agent runs" sidebar label. legacy /containers/* URLs redirect to /runs/* so existing bookmarks and shared links keep working. backend /api/containers endpoints and @/lib/containers imports are unchanged. Fixes #207 --- apps/server/src/client/App.tsx | 16 ++++++++++++---- .../src/client/pages/container-detail.test.ts | 2 +- .../server/src/client/pages/container-detail.tsx | 10 +++++----- apps/server/src/client/pages/event-detail.tsx | 2 +- apps/server/src/client/pages/sessions.tsx | 4 ++-- .../components/clear-sessions-feedback.test.ts | 2 +- .../src/components/clear-sessions-feedback.tsx | 2 +- apps/server/src/components/layout.tsx | 2 +- apps/server/src/components/new-chat-dialog.tsx | 2 +- 9 files changed, 25 insertions(+), 17 deletions(-) diff --git a/apps/server/src/client/App.tsx b/apps/server/src/client/App.tsx index 85c027f6..cbf31c11 100644 --- a/apps/server/src/client/App.tsx +++ b/apps/server/src/client/App.tsx @@ -1,4 +1,4 @@ -import { BrowserRouter, Route, Routes } from "react-router-dom" +import { BrowserRouter, Navigate, Route, Routes, useLocation } from "react-router-dom" import ContainerDetailPage from "@/client/pages/container-detail" import DashboardPage from "@/client/pages/dashboard" import EventDetailPage from "@/client/pages/event-detail" @@ -26,9 +26,10 @@ function App() { } /> } /> } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> } /> @@ -37,4 +38,11 @@ function App() { ) } +// Redirect legacy /containers/* URLs (bookmarks, shared links) to /runs/*. +function ContainersRedirect() { + const location = useLocation() + const target = location.pathname.replace(/^\/containers/, "/runs") + return +} + export default App diff --git a/apps/server/src/client/pages/container-detail.test.ts b/apps/server/src/client/pages/container-detail.test.ts index eca7ebf8..69490208 100644 --- a/apps/server/src/client/pages/container-detail.test.ts +++ b/apps/server/src/client/pages/container-detail.test.ts @@ -28,7 +28,7 @@ function renderRun(messages: SessionMessage[], extra: Partial() const [searchParams] = useSearchParams() - // Prefer the query-param form (/containers/detail?key=...) which is refresh-safe; - // the path-param form (/containers/:entityKey) breaks on reload because the + // Prefer the query-param form (/runs/detail?key=...) which is refresh-safe; + // the path-param form (/runs/:entityKey) breaks on reload because the // encoded slash (%2F) in the entity key isn't matched by SPA asset fallback. const entityKey = searchParams.get("key") ?? (rawKey ? decodeURIComponent(rawKey) : "") const navigate = useNavigate() @@ -909,7 +909,7 @@ export default function ContainerDetailPage() { onSuccess: () => { toast.success("Container destroyed") setDestroyOpen(false) - navigate("/containers") + navigate("/runs") }, onError: () => toast.error("Failed to destroy container"), }) @@ -1032,7 +1032,7 @@ export default function ContainerDetailPage() { return (
- @@ -1105,7 +1105,7 @@ export default function ContainerDetailPage() {
- diff --git a/apps/server/src/client/pages/event-detail.tsx b/apps/server/src/client/pages/event-detail.tsx index 265af000..94ab680f 100644 --- a/apps/server/src/client/pages/event-detail.tsx +++ b/apps/server/src/client/pages/event-detail.tsx @@ -116,7 +116,7 @@ export default function EventDetailPage() {