Skip to content

feat(nav): NAV-1a sidebar shows areas - #1636

Merged
mergify[bot] merged 3 commits into
mainfrom
claude/nav-1a
Oct 16, 2026
Merged

mergify[bot] merged 3 commits into
mainfrom
claude/nav-1a

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Die Seitenleiste zeigt jetzt Bereiche statt einzelner Seiten: ohne den Schalter „Weitere Bereiche“ siehst du „Fabrik“ (bisher „Leitstand“) und „Einstellungen“, mit dem Schalter alle sechs Bereiche Fabrik, Aufträge, Beweise, Betrieb, Wissen und Einstellungen. Der Bereich ist auf jeder seiner Seiten markiert, zum Beispiel „Betrieb“ auf Team, Steuerung, Automatik und Core, und alle Adressen bleiben gleich. Der Reiter mit dem Agentengraphen heißt jetzt „Linie“, damit „Fabrik“ nicht zweimal als Link vorkommt; „Betrieb“ wird in v2.0 sichtbar, sobald NAV-2a die Seite /betrieb anlegt.

Report

Plan-ID: NAV-1a

Operator: UMSETZEN. Base: main @ 33768b4b (merge of #1630, NAV-0). Includes the former NAV-1b (DS-T-05 #1629 is merged).

What changed

  • src/shell/routes.ts: new AREAS (six areas of ia.md §1, label keys, keyboard order) and AreaId; every ShellRoute gets area (start = null). Route IDs, paths, tabs, SCOPE_ROUTE_IDS and palette logic unchanged.
  • src/shell/Shell.tsx (Sidebar only): one link per area that has a visible route; it opens the area's first visible route, shows that route's icon, and is aria-current="page" when the active route belongs to the area. Einstellungen stays last (foot). With the scope flag off: Fabrik, Einstellungen. Betrieb shows once a member is visible (today only with the flag; NAV-2a adds /betrieb).
  • src/i18n/de.ts: nav.leitstand „Fabrik“, nav.eingangPlan „Aufträge“, nav.gedaechtnis „Wissen“, new nav.betrieb „Betrieb“, scope switch description („neben Fabrik und Einstellungen“), leitstand.tab.fabrik „Linie“ (former NAV-1b). Keys unchanged, so the Fabrik <h1> and palette labels follow (e.g. „Fabrik · Haupt“, „Aufträge · Plan“).
  • src/screens/start/texts.ts: „Die Fabrik zeigt, wer arbeitet“.
  • Tests: new named tests below; label pins follow the new names in Shell.test.tsx, scope.test.tsx, mount.test.tsx, scope-entry.mount.test.tsx (Kontingente/Team land on area „Betrieb“), hardcoded.test.ts, and the flow tab in LeitstandRoute.test.tsx („Fabrik“ → „Linie“, 7 places). No assertion removed or loosened.
  • docs/PLAN.md: row NAV-1a → „Erledigt: feat(nav): NAV-1a sidebar shows areas #1636; …“ (states the truth after merge, like NAV-0). Plus one clause in the user section item 6, which said „Umsetzung NAV-1a bis NAV-2b geplant, noch nicht umgesetzt“ and would be stale after merge (AGENTS.md: the plan must never be stale); now „NAV-0 Doku und NAV-1a Seitenleiste erledigt, NAV-2a/2b geplant“. The sentence „… tragen ihre Zeilen in ihren eigenen PRs.“ is untouched.

Red → green

Red commit 4a662d9b (tests only, 12 failing against the old code: npx vitest run src/shell/Shell.test.tsx src/shell/scope.test.tsx src/screens/leitstand/LeitstandRoute.test.tsx → exit 1, 12 failed / 31 passed), fix commit 3be2ac3f.

  • src/shell/Shell.test.tsx::lists exactly the six areas without Ersteinrichtung
  • src/shell/Shell.test.tsx::marks the Betrieb area current on every member route (all 10 paths of team/steuerung/automatik/core)
  • src/shell/scope.test.tsx::with the scope flag off the sidebar shows Fabrik and Einstellungen
  • src/screens/leitstand/LeitstandRoute.test.tsx::names the flow tab Linie inside the Fabrik area (exactly one „Fabrik“ link on the page)

Evidence (Linux server, 2026-10-16)

Command Exit
npm run dev:start-check 0
npm run typecheck 0
node scripts/contrast-check.mjs 0 (740 pairs)
npx vitest run src/shell src/screens/leitstand src/screens/start src/i18n 0 (41 files, 352 tests)
bash scripts/ci/red-first.sh (base 33768b4b, head 3be2ac3f) 0 (4/4 red or missing at base, green at head)
bash scripts/ci/gates.sh lane prepush at 3be2ac3f 0 (incl. plan-check, fe-test, rust-suite)
bash scripts/ci/gates.sh lane prepush at head 69286578 (after the plan commit) 0
node scripts/plan-check.mjs --offline 0 (0 findings)
git ls-remote origin claude/nav-1a 69286578… = local HEAD
bash scripts/ci/secret-scan.sh before each commit 0

Screenshot (inspected): vite dev server with Tauri mocks, Playwright 1440×900, stored outside the repo in the server report folder nav-1a-shots/: scope-off-linie-light.png (#/leitstand/fabrik, flag off: sidebar „Fabrik“ current + „Einstellungen“, tab row Haupt · Linie · Betrieb · Werkzeuge · Klassisch), scope-on-betrieb-light.png / scope-on-betrieb-dark.png (#/automatik/befehle, flag on: Fabrik, Aufträge, Beweise, Betrieb current → #/team, Wissen, Einstellungen). No page errors.

Size: 11 files, +97/−45 (≤ 300).

Architecture drift: no new findings. Licenses: no new dependency.

NICHT ABGEDECKT

  • node scripts/plan-check.mjs online (exit 1, 3 findings): NAV-1a #1636: done / GitHub OPEN is expected until the merge (row states the after-merge truth); DS-H-00 #1633 and DS-T-01 #1623 (rows say planned/in progress, GitHub MERGED) are other packages' rows on main, not touched here (own row only).
  • Windows half: #[cfg(windows)] tests and the Windows arms of clippy did not run (Linux server only); the Windows lane runs in the merge queue. This package changes no Rust.
  • Browser smoke e2e/shell.core.spec.ts and the frontend build run only in the linux lane (CI), not in prepush. Route paths are unchanged, so the e2e route walk should not be affected; not run locally.
  • Desktop app (WebView2) not launched; screenshots come from the vite dev server with Tauri mocks.
  • Open drafts test(shell): record narrow v2 acceptance and keyboard coverage (V2-ACC1b) #1540 (acceptance: first tab stop „Leitstand“) and docs(v2): Klick-Checkliste Hülle + Leitstand (V2-UAT-1a) #1544 (checklist wording) still name „Leitstand“; per the NAV cut the later-merging PR follows (1 line in test(shell): record narrow v2 acceptance and keyboard coverage (V2-ACC1b) #1540). Not touched here.
  • Betrieb icon is the first visible member's icon (Team today); NAV-2a's /betrieb route will define its own.
  • Stale test names mentioning the tab as „Fabrik“ (e.g. reaches Fabrik from Haupt by its tab link) kept to avoid renaming existing tests.

Review

Review: ausstehend (Stufe B) — pending, Root commissions two non-Anthropic reviewers (OpenRouter pair). No self-approval.

🤖 Generated with Claude Code on the ProjectA server worker

Root acceptance (16.10.2026 ~14:50 MESZ)

ID Source Severity Finding Disposition
R1636-K1 OpenRouter moonshotai/kimi-k3 low src/shell/routes.ts:9 comment "the last one sits in the foot" looks stale rejected: src/shell/Shell.tsx:37 renders entries.slice(-1) in g-shell-nav g-shell-foot
R1636-K2 kimi-k3 low Shell.test.tsx:15 BETRIEB_IDS hardcoded instead of derived from area follow-up NAV-2a (an independent literal list is a legitimate test oracle)
R1636-K3 kimi-k3 low no test that the Betrieb link follows the first visible member follow-up NAV-2a
Reviews on head 6928657: google/gemini-3.8-flash APPROVE, moonshotai/kimi-k3 APPROVE — two non-author families (Google, Moonshot). Red-first: four named Test-First trailers on 3be2ac3, red commit 4a662d9 first. Tier B met. Includes the former NAV-1b (tab „Linie“) per Root brief update after #1629.
Root accepts head 6928657.

Cuarroc and others added 3 commits October 16, 2026 14:15
The sidebar lists the six areas, marks Betrieb current on every member
route, shows only Fabrik and Einstellungen with the scope flag off, and
the flow tab inside the Fabrik area is named Linie. Existing label pins
follow the new names. Red against the current code; the fix follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every route gets an `area` field and `AREAS` lists the six areas of
ia.md section 1 by label key. The sidebar shows one link per area with a
visible route, opens that area's first visible route and marks the area
current on every member route. With the scope flag off that is Fabrik and
Einstellungen; Betrieb appears once a member is visible (NAV-2a adds
`/betrieb`). Route IDs, paths and the palette stay unchanged.

New values: nav.leitstand "Fabrik", nav.eingangPlan "Aufträge",
nav.gedaechtnis "Wissen", new nav.betrieb "Betrieb", the scope switch
description and the first-run hint. The flow tab inside the Fabrik area
becomes "Linie" (former NAV-1b), so no link name appears twice.

Test-First: src/shell/Shell.test.tsx::lists exactly the six areas without Ersteinrichtung
Test-First: src/shell/Shell.test.tsx::marks the Betrieb area current on every member route
Test-First: src/shell/scope.test.tsx::with the scope flag off the sidebar shows Fabrik and Einstellungen
Test-First: src/screens/leitstand/LeitstandRoute.test.tsx::names the flow tab Linie inside the Fabrik area
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The NAV-1a row states what is true after merge; the user section no
longer says NAV-1a is not implemented.

No-Test: plan text only
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Cuarroc
Cuarroc marked this pull request as ready for review October 16, 2026 12:46
@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 16, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-16T12:51:58.963519Z 6928657 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 692865782b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/PLAN.md
| DS-H-07 | Probe-Halle: Galerie-Seite und Messaufbau (`shot.mjs --dpr --motion`), danach Abnahme durch den Nutzer: zuerst Bilder und kurzes Video vom Server (3 Bewegungsmodi × hell/dunkel), dann nach seinem Ja in der App am PC mit Speichermessung | Root disponiert; Abnahme der Nutzer | DS-H-06; Galerie aus DS-X-14 und DS-X-15 (nicht disponiert) | Server | B | Geplant: nicht disponiert (16.10.); das Urteil des Nutzers entscheidet über die übrigen Tabs | wie DS-H-01; Urteil des Nutzers | – |
| NAV-0 | Doku zur Navigation: `docs/plan/v2.0/ia.md` §1/§3 beschreibt die sechs Bereiche mit der Tabelle „Bereich → Route-IDs“ (IDs unverändert), `docs/decisions.md` „2026-10-16 - NAV-0“ bucht E-1 B, die Sichtbarkeit (drei Bereiche) und den Reiternamen „Linie“; PLAN bucht die Entscheidungen und diese Zeilen | Root disponiert | – | Server | C | Erledigt: #1630 (Doku, Stand: PR-Text, Merge durch Root) | prepush Exit 0; `node scripts/plan-check.mjs --offline` Exit 0; Doc-Link-Gate Exit 0 | – |
| NAV-1a | Seitenleiste nach Bereichen: Feld `area` je Route und Liste der Bereiche, ein Link je Bereich auf seine erste sichtbare Route, `aria-current` je Bereich; neue Werte `nav.leitstand` „Fabrik“, `nav.eingangPlan` „Aufträge“, `nav.gedaechtnis` „Wissen“, neu `nav.betrieb`; zugleich der Reiter `leitstand.tab.fabrik` → „Linie“ (früher NAV-1b), damit kein Linkname doppelt vorkommt; Routen-IDs und Pfade bleiben (`src/shell/routes.ts`, `Shell.tsx` (nur `Sidebar`), `src/i18n/de.ts`, `src/screens/start/texts.ts`, `LeitstandRoute.test.tsx` und die Shell-Tests) | Root disponiert | NAV-0; #1606 (`Shell.tsx`) und #1604 gemergt oder `main` eingemergt | Server | B | Geplant: nicht disponiert (16.10.) | benannte Tests rot→grün (sechs Bereiche ohne Ersteinrichtung, Betrieb aktiv auf jeder Mitgliedsroute, Schalter aus zeigt Fabrik und Einstellungen, Reiter „Linie“); prepush; zwei Reviews; Zeilen ≤ 300 | – |
| NAV-1a | Seitenleiste nach Bereichen: Feld `area` je Route und Liste der Bereiche, ein Link je Bereich auf seine erste sichtbare Route, `aria-current` je Bereich; neue Werte `nav.leitstand` „Fabrik“, `nav.eingangPlan` „Aufträge“, `nav.gedaechtnis` „Wissen“, neu `nav.betrieb`; zugleich der Reiter `leitstand.tab.fabrik` → „Linie“ (früher NAV-1b), damit kein Linkname doppelt vorkommt; Routen-IDs und Pfade bleiben (`src/shell/routes.ts`, `Shell.tsx` (nur `Sidebar`), `src/i18n/de.ts`, `src/screens/start/texts.ts`, `LeitstandRoute.test.tsx` und die Shell-Tests) | Root disponiert | NAV-0; #1606 (`Shell.tsx`) und #1604 gemergt oder `main` eingemergt | Server | B | Erledigt: #1636; die Seitenleiste zeigt einen Link je Bereich (Schalter aus: Fabrik und Einstellungen, Betrieb ab NAV-2a), der Fluss-Reiter heißt „Linie“ | benannte Tests rot→grün (sechs Bereiche ohne Ersteinrichtung, Betrieb aktiv auf jeder Mitgliedsroute, Schalter aus zeigt Fabrik und Einstellungen, Reiter „Linie“); prepush; zwei Reviews; Zeilen ≤ 300 | – |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Gleiche vor dem Erledigt-Status alle Planzeilen ab

Der Kandidat markiert NAV-1a als erledigt, lässt aber DS-H-00 in Zeile 287 weiterhin als „Geplant“ stehen, obwohl der lokal vorhandene Mergify-Commit 6342a9f dokumentiert, dass PR #1633 bereits um 12:26 UTC gemergt wurde—vor diesem Kandidaten von 12:47 UTC; auch der Commit-Bericht nennt genau diesen Online-Plan-Check-Fehler. Dadurch wäre der kanonische Plan unmittelbar nach Übernahme weiterhin nachweislich veraltet; aktualisiere die DS-H-00-Zeile im selben Änderungssatz.

AGENTS.md reference: AGENTS.md:L121-L121

Useful? React with 👍 / 👎.

@Cuarroc

Cuarroc commented Oct 16, 2026

Copy link
Copy Markdown
Owner Author

Root queue (head 6928657, review-ok, required checks pass): @Mergifyio queue

@mergify mergify Bot mentioned this pull request Oct 16, 2026
30 of 46 tasks
@Cuarroc

Cuarroc commented Oct 16, 2026

Copy link
Copy Markdown
Owner Author

Root auto-queue: head 6928657 unchanged since review-ok, all checks green. @Mergifyio queue

@mergify mergify Bot added the queued label Oct 16, 2026
@mergify
mergify Bot merged commit b6c36f2 into main Oct 16, 2026
25 checks passed
@mergify

mergify Bot commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-16 12:57 UTC · Rule: default · triggered by merge protections
  • ✅ Checks passed · on draft merge queue: checking #1636 on main (6342a9f) #1638
  • ✅ Merged — 2026-10-16 13:11 UTC · at b6c36f2b39b73e396e2ee28f9aba8faf0f5a25cf · merge

This pull request spent 13 minutes 33 seconds in the queue, including 13 minutes 12 seconds running CI.

Required conditions to merge
  • check-success = gates (linux)
  • check-success = gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (linux)
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (windows)
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

@mergify
mergify Bot deleted the claude/nav-1a branch October 16, 2026 13:11
@mergify mergify Bot removed the queued label Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant