diff --git a/docs/IMPLEMENTATION_PLAN.md b/docs/IMPLEMENTATION_PLAN.md index 7459184..04a6e4a 100644 --- a/docs/IMPLEMENTATION_PLAN.md +++ b/docs/IMPLEMENTATION_PLAN.md @@ -1,5 +1,11 @@ # ASSESSOR – Umsetzungsplan +## Same-change focus ends on area switch (2026-10-14, Phase 7 Presentation) + +Current user release: Presentation, Core Tests. User bug report: after clicking a same-change ring in Work and switching to another area, Work kept showing only the focused group. User decision: any switch to another area through the main navigation ends the focus, restores the preceding Work filters, sort, selection, view and scroll, and keeps the chosen area open (the focus restore no longer returns to its starting area in that case). The ring, `Restore previous view`, the Accepted Risks entry into Work and a click on the already active area keep their behavior. Permanent synthetic Light/Dark interaction test `tests/features/related-findings-area-switch.test.tsx` renders the real App and focus provider; the pinned source assertion in `work-header-layout.test.ts` follows the new navigation handler. Verified: the new test fails on the previous navigation code and passes with the fix; all 2563 tests, the import gate and both production builds pass. No version change in this step (Platform not released). + +Change log 2026-10-14: a main-navigation area switch ends an active same-change focus. + ## Rebase onto Michael 7471afc: Client Info repeat-visit cache and test alignment (2026-10-14, Phase 7 Presentation) Current user consent: Presentation, Core Tests. After rebasing the branch onto Michael's `7471afc` (Security export, Work Packages tab), the Client Info repeat-visit check read 43 record fields instead of 0: the Overview (current source) and Security (no source filter) analyses of the same sheet overwrote each other's single cache slot, and the Security view, its GPO gap counts and its group sort were recomputed on every remount. The analysis cache now keeps up to three source-filter entries per sheet, and the Security view and its sorted groups are cached by their analysis/record identity; counts, verdicts and drilldowns are unchanged. Test alignment by user decision: DB Structure cards may use `border-radius: 0` or the shared `--tile-radius` token (the AGENTS tile-radius wording is unchanged), and the Client Info action test expects Management Report, Technical Report and HTML Security Export in the Engines-blue role. `ClientInfoTabs` keeps `lazy` (unmount while hidden) and adds `retain` for the Work Packages tab. No version change; verified with `npm run test:imports`, all 2561 vitest tests and both production builds. Open: `tests/design-language-check.mjs` rejects the inline bar widths in `src/features/comparison/ComparisonTab.tsx` from 2.27.0. diff --git a/src/app/App.tsx b/src/app/App.tsx index b368d57..7bf696d 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -97,6 +97,12 @@ export function App() { if (!hasIncomingFilter) app.resetFilters(); openWork(); }, [app.actionOnly, app.facetFilters, app.pathFindingIds, app.resetFilters, app.search, openWork]); + // Switching areas ends a same-change focus. Its restore returns to the starting area, + // so the chosen area is applied afterwards and wins within the same update. + const navigateArea = (area: AppArea) => { + if (area !== activeArea) related?.release(); + if (area === 'work') openWorkDefault(); else setActiveArea(area); + }; const marked = useMemo(() => Object.values(reviews).filter(review => review.include).length, [reviews]); @@ -165,7 +171,7 @@ export function App() {