diff --git a/docs/CODEX_EXECUTION_LOG.md b/docs/CODEX_EXECUTION_LOG.md index 02755a12..86ecb5ce 100644 --- a/docs/CODEX_EXECUTION_LOG.md +++ b/docs/CODEX_EXECUTION_LOG.md @@ -11304,3 +11304,25 @@ Validation: - visually inspected the canonical 512 px render and the 32 px favicon derivative; - verified desktop and mobile landing-page renders with the new GeoIntel and ITWorx assets present, meaningful page content and no Vite error overlay; expected API 500 responses remained limited to the absent local backend; - React review confirmed named, isolated brand components and accessible decorative versus meaningful image semantics. + +## 2026-07-26 - Task-first usability and functional navigation audit + +Implemented: + +- reduced the wide desktop navigation rail and renamed the misleading read-only `Beheer` destination to the operationally accurate `Systeem` workspace; +- aligned the current/evolution period control into one stable map-header tool group and added containment rules for long dataset, quality, provider and context labels; +- promoted municipality selection from a hidden long select to a searchable first step above the map; selecting an exact persisted municipality immediately activates its existing Area geometry and project datasets; +- renumbered the simple map journey to municipality, theme, selection and results, and rewrote the map instruction to describe that complete path; +- turned the empty quality state into an actionable handoff to the map or image-analysis workflow while preserving persisted QA evidence, metrics and map drill-down when checks exist; +- replaced the passive provider-only management page with a system command surface that reports configured connectors and routes operators to the map, source/area management or readiness status. + +Validation: + +- frontend unit tests cover exact municipality search, regional-area exclusion and active municipality feedback; +- frontend TypeScript and production build passed; +- React review confirmed local state ownership, semantic form/button controls, stable list keys and accessible names; +- no API, persistence, CRS or official-source semantics changed. + +Known limitation: + +- the authenticated live workbench still requires a user session for visual browser verification after deployment; public landing and runtime health remain independently testable. diff --git a/docs/TODO.md b/docs/TODO.md index 3befe644..ef8cb7de 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -898,3 +898,13 @@ This file now starts with the current implementation status. Older preparation/b - [x] Generate matching 32 px, Apple touch and Unraid PNG derivatives. - [x] Add the approved ITWorx.tech identity as a subtle Jens maker signature. - [ ] Revisit alternative lockups only when an approved GeoIntel brand guide exists. + +# Sprint 227 - Task-first usability audit + +- [x] Reduce the desktop navigation rail and contain long card/context labels. +- [x] Align the latest-state and evolution controls as one responsive header group. +- [x] Make searchable municipality selection the first step of the map workflow. +- [x] Route an empty quality workspace to real map and image-analysis actions. +- [x] Replace passive management naming with an actionable system/source monitor. +- [x] Preserve existing persisted Area, source, analysis and QA contracts. +- [ ] Add more direct quality-review actions only when a persisted candidate/reference pair exists; never synthesize a check. diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index d7483259..986f3b61 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -75,7 +75,7 @@ const workspaceNavItems: WorkspaceNavigationItem[] = [ { key: 'analysis', label: 'Kwaliteit', description: 'Resultaten controleren' }, { key: 'ai', label: 'Beeldanalyse', description: 'Gebouwen herkennen op luchtbeelden' }, { key: 'exports', label: 'Downloads', description: 'Resultaten bewaren en delen' }, - { key: 'system', label: 'Beheer', description: 'Databronnen en systeemstatus' }, + { key: 'system', label: 'Systeem', description: 'Bronkoppelingen en operationele status' }, ] const workspaceNavGroups: WorkspaceNavigationGroup[] = [ @@ -1056,6 +1056,8 @@ function WorkbenchApp({ username, loggingOut, onLogout }: WorkbenchAppProps): JS onOpenEvidenceMap={openQualityEvidenceOnMap} evidenceLoading={qualityEvidenceLoading} evidenceError={qualityEvidenceError} + onOpenMapWorkspace={() => setActiveWorkspace('map')} + onOpenAnalysisWorkspace={() => setActiveWorkspace('ai')} />
@@ -1234,6 +1236,9 @@ function WorkbenchApp({ username, loggingOut, onLogout }: WorkbenchAppProps): JS loadingCapabilities={loadingCapabilities} capabilitiesError={capabilitiesError} onRefresh={loadCapabilities} + onOpenSources={() => setActiveWorkspace('data')} + onOpenStatus={() => setActiveWorkspace('overview')} + onOpenMap={() => setActiveWorkspace('map')} /> ) : null} diff --git a/frontend/src/components/map/MapWorkspace.tsx b/frontend/src/components/map/MapWorkspace.tsx index 0849d109..72aef738 100644 --- a/frontend/src/components/map/MapWorkspace.tsx +++ b/frontend/src/components/map/MapWorkspace.tsx @@ -7,6 +7,7 @@ import { useOfficialMapProducts } from '../../hooks/useOfficialMapProducts' import { useTemporalComparison } from '../../hooks/useTemporalComparison' import { getDatasetDisplayName, getDatasetSourceDisplayName } from '../../lib/datasetDisplay' import { TemporalTrendChart } from './TemporalTrendChart' +import { MunicipalitySearch } from './MunicipalitySearch' import { terrainImageUrl } from '../../lib/terrainImage' import { floodHazardImageUrl } from '../../lib/floodHazardImage' import { thematicRasterImageUrl, walousRasterImageUrl } from '../../lib/thematicRaster' @@ -2177,9 +2178,10 @@ export function MapWorkspace({

{activeScopeLabel} · geografische verkenner

Gebied analyseren

-

Kies een thema, teken een rechthoek en lees de beschikbare gegevens.

+

Kies een gemeente, selecteer een thema en analyseer het volledige gebied of een eigen rechthoek.

-
+
+
+
+
- + + {workspaceLoading ? (