diff --git a/work/dashboard-frontend/src/components/RestartBanner.tsx b/work/dashboard-frontend/src/components/RestartBanner.tsx
index ff53ce9..d8f882c 100644
--- a/work/dashboard-frontend/src/components/RestartBanner.tsx
+++ b/work/dashboard-frontend/src/components/RestartBanner.tsx
@@ -87,8 +87,9 @@ export default function RestartBanner() {
const body = await res.json().catch(() => ({}))
throw new Error(body.detail || `HTTP ${res.status}`)
}
- // Clear the banner immediately; the container will tear down and the
- // dashboard will need a refresh anyway.
+ // Clear the banner immediately; the bot process restarts in place
+ // (a few seconds) and the dashboard briefly reconnects. The container
+ // itself is NOT recreated.
clearRestartRequired()
} catch (e) {
setError(String(e))
@@ -106,7 +107,7 @@ export default function RestartBanner() {
-
Container restart required
+
Restart required
{state.changedKeys.length > 0 && (
({state.changedKeys.length} key{state.changedKeys.length === 1 ? '' : 's'}:{' '}
@@ -114,7 +115,7 @@ export default function RestartBanner() {
)}
- for these changes to take effect. Until then the runtime keeps its boot-time configuration. Restart-required keys include anything under Config → environmental (feed_source, central URL), the LLM backend swap, and the dispatcher cold-start grace window. Other keys take effect on the next handler call.
+for these changes to take effect. Click Restart now — it restarts the bot process in place (a few seconds; the dashboard briefly reconnects), NOT the container. Until then the runtime keeps its boot-time configuration. Restart-required keys include transport connections and anything under Config → environmental (feed_source, central URL), the LLM backend swap, and the dispatcher cold-start grace window. Other keys take effect on the next handler call.
{error &&
{error}
}