From db3b1d7b676f255f092260804777d4c2bcae3408 Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Fri, 25 Sep 2026 19:14:21 +0300 Subject: [PATCH] fix(navigation): return repeated section selections to their entry view --- apps/control-station/src/App.tsx | 19 ++++++++++++++++--- .../src/components/WorkspaceBackButton.tsx | 8 ++++++++ .../system/SystemNavigationPanel.tsx | 4 +++- .../core/observation/useSessionOverview.ts | 2 +- .../src/workspaces/fleet/BoardMonitorView.tsx | 7 ++++--- .../workspaces/fleet/VehiclesWorkspace.tsx | 5 +++-- 6 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 apps/control-station/src/components/WorkspaceBackButton.tsx diff --git a/apps/control-station/src/App.tsx b/apps/control-station/src/App.tsx index de9e409..8362ca2 100644 --- a/apps/control-station/src/App.tsx +++ b/apps/control-station/src/App.tsx @@ -152,6 +152,7 @@ export default function App() { contentExpanded: true, }); + const [navigationRevision, setNavigationRevision] = useState(0); const [activeRoot, setActiveRoot] = useState( polygonDatasetRoute.active ? "data" : null, ); @@ -457,6 +458,17 @@ export default function App() { workspace.openView(viewId); }; + // Explicit menu navigation always returns to that workspace's entry screen. + const openNavigationView = (viewId: string) => { + if (!workspaceById(viewId)) return; + setNavigationRevision(value => value + 1); + sessionOverview.close(); + setSourceWindowOpen(false); + setDisplayWindowOpen(false); + setLayerInspectorOpen(false); + openView(viewId); + }; + const openSource = () => { if (!sceneWorkspaceActive) return; setSourceDraft(sourceUrl); @@ -729,6 +741,7 @@ export default function App() { openNavigationView("modules")} onClose={workspace.closeNavigation} /> ) : currentRoot ? ( @@ -755,7 +768,7 @@ export default function App() { icon: , }))} activeId={workspace.activeView ?? undefined} - onItemChange={openView} + onItemChange={openNavigationView} footer={ <>