diff --git a/apps/server/src/client/App.tsx b/apps/server/src/client/App.tsx
index 85c027f..cbf31c1 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 eca7ebf..6949020 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 (
-