From 00332e275a67772225788ac5f591f75c51b65320 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Fri, 7 Aug 2026 11:41:16 +0000 Subject: [PATCH] put the monitor scope in the url /system-monitor/:scope, the same shape as /photos: route pair, one Navigate guard after the hooks, scope list as react-router NavLinks, and both panels reading useParams instead of agreeing over a `monitor:scope` channel. The Dock's isActive is a startsWith, so its highlight survives the redirect off the bare route. --- docs/navigation-audit.md | 5 +- docs/workspace-panel-todo.md | 6 ++- src/apps/officer-web/App.tsx | 1 + .../SystemMonitor/SystemMonitorScreen.tsx | 12 +++-- .../src/apps/SystemMonitor/MonitorMain.tsx | 5 +- .../src/apps/SystemMonitor/ScopeList.tsx | 50 +++++++++---------- .../src/apps/SystemMonitor/shared.ts | 24 ++++++--- src/workspaces/officerdev/src/index.ts | 4 ++ 8 files changed, 66 insertions(+), 41 deletions(-) diff --git a/docs/navigation-audit.md b/docs/navigation-audit.md index 7837d581..af3c352d 100644 --- a/docs/navigation-audit.md +++ b/docs/navigation-audit.md @@ -79,7 +79,7 @@ are good building blocks. The **Workspace/Panel framework** contains **zero** ro | M7 | `workspaces/components/Combobox.tsx:53` | caller-supplied route | (existing) | shared widget: `href`-bearing options do `navigate(option.href)`; render them as ``. Every caller inherits the opaque click. | | ~~M8~~ | `Layout/Header/UserMenu.tsx` | — | — | **Done.** Removed rather than routed: nothing had ever been built behind `/settings/resources`, so the item was a bounce to `/` dressed as navigation. Its `header.userMenu.resources` locale keys went with it. | | M9 | `Screens/Dashboard/Plans/index.tsx:36` | a plan document | `/plans/:name` | native `