Repository navigation
feat(nav): NAV-2b Fabrik without the Betrieb tab - #1647
Conversation
Tab bar without Betrieb, alias with trailing slash and query, Betrieb area opened from the empty board, a notice for a failed profile read, and e2e/history guards for the retired path. Test-First: src/screens/leitstand/LeitstandRoute.test.tsx::the Fabrik tab bar has no Betrieb tab Test-First: src/screens/leitstand/LeitstandRoute.test.tsx::an empty board offers Auftrag einreihen and opens the Betrieb area Test-First: src/shell/mount/routing.test.ts::retired path with trailing slash resolves to /betrieb Test-First: src/shell/mount/routing.test.ts::retired path with a query string keeps the query and resolves to /betrieb Test-First: src/shell/mount/routing.test.ts::the retired Betrieb path is no Leitstand route any more Test-First: src/shell/mount/betrieb.mount.test.tsx::a failed profile read shows a notice Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Remove the Betrieb branch, tab and key leitstand.tab.betrieb from the Fabrik; the empty-board step opens /betrieb. resolveAlias normalises a trailing slash and a query string. A failed profile read on /betrieb shows an honest notice. Regression-For: d866d7d Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No-Test: plan text only Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No-Test: plan text only Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ee2fb27b79
ℹ️ 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".
| const [bare, ...query] = path.split("?"); | ||
| const target = ALIASES[trim(bare)]; | ||
| return target === undefined ? path : [target, ...query].join("?"); |
There was a problem hiding this comment.
Preserve the query through the actual alias path
When a bookmark such as #/leitstand/betrieb?x=1 is opened, the query is still discarded: ShellMount calls pathFromHash before resolveAlias, while pathFromHash removes everything after ? in src/shell/routes.ts:97-100, so this function receives only /leitstand/betrieb and replaces the hash with #/betrieb. The new unit test invokes resolveAlias directly and therefore misses the live routing pipeline; alias the raw fragment before stripping the query and ensure isBetrieb recognizes the resulting query-bearing path. Otherwise the PLAN row's claim that query strings are handled remains untrue after merge.
AGENTS.md reference: AGENTS.md:L121-L121
Useful? React with 👍 / 👎.
| return ( | ||
| <div className="g-lr"> | ||
| <div className="g-lr-head"><h1>{t("nav.betrieb")}</h1></div> | ||
| {profilesFailed && <div role="status"><HonestState kind="offline" title={t("leitstand.profilesFailed")} hint={t("betrieb.profilesHint")} /></div>} |
There was a problem hiding this comment.
Render one status region when no project is selected
When list_agent_profiles fails while no project is selected, this new status is rendered alongside the existing no-project role="status" on line 33. Both live regions appear during the same render, so assistive technology can announce two competing state messages rather than one coherent explanation. Suppress the profile warning until a project exists or combine both messages under a single status region.
Useful? React with 👍 / 👎.
|
@Mergifyio queue |
|
Root auto-queue: head ee2fb27 unchanged since review-ok, all checks green. @Mergifyio queue |
☑️ This pull request is already queued |
Merge Queue Status
This pull request spent 27 minutes 28 seconds in the queue, including 14 minutes 50 seconds running CI. Required conditions to merge
|
Die Fabrik hat jetzt keinen Reiter „Betrieb“ mehr; Betrieb gibt es nur noch als eigenen Bereich unter
/betrieb. Der alte Pfad/leitstand/betriebführt weiter dorthin, auch mit Schrägstrich oder Abfrage. Schlägt das Lesen der Profile in Betrieb fehl, steht jetzt ein ehrlicher Hinweis da statt Stille.Plan-ID: NAV-2b
Report
Was geändert
LeitstandRoute: Zweig, Reiter undBETRIEB_PATHentfernt; der Schritt „Auftrag einreihen“ der leeren Fabrik öffnet/betrieb. Schlüsselleitstand.tab.betriebentfernt, neubetrieb.profilesHint.routing.ts:resolveAliasnormalisiert Schrägstrich und Abfrage (Abfrage bleibt erhalten);/leitstand/betriebist keine Leitstand-Route mehr (R1641-G1/K2).BetriebRoute: fehlgeschlagenes Profil-Lesen zeigtHonestState(R1641-K4)./leitstand/betrieblandet auf/betrieb(R1641-K5); ein Mount-Test belegt, dass die Umleitungreplacenutzt (kein Zurück-Eintrag).betrieb.mount.test.tsxab; Reiter-Tests der Fabrik ohne Betrieb.docs/PLAN.md: nur die Zeile NAV-2b.R1641-K3 (Alias vor anderen Hash-Lesern): nicht vorgezogen.
ShellMountlöst den Alias schon im Initialzustand auf, so dass alle pfadabhängigen Ansichten und Daten den neuen Pfad sehen; die Seitenleiste (Shell) liest den Hash selbst und folgt perhashchangeunmittelbar nach demreplace. Ein früheres Umschreiben bräuchte einen Seiteneffekt beim Rendern oder eine Änderung anShell.tsx/main, außerhalb dieses Pakets.Red → grün (Basis f42baa3, rot-Commit d866d7d)
LeitstandRoute.test.tsx: „the Fabrik tab bar has no Betrieb tab“, „an empty board offers Auftrag einreihen and opens the Betrieb area“routing.test.ts: „retired path with trailing slash resolves to /betrieb“, „…with a query string keeps the query…“, „the retired Betrieb path is no Leitstand route any more“betrieb.mount.test.tsx: „a failed profile read shows a notice“Belege
npx vitest run src/screens src/shell src/i18n→ Exit 0 (608 Tests)npm run typecheck→ Exit 0bash scripts/ci/red-first.sh→ Exit 0bash scripts/ci/gates.sh lane prepush→ Exit 0 (alle Gates grün)git push→ Exit 0;git ls-remotezeigt 67a07ceNICHT ABGEDECKT
linux.#[cfg(windows)]-Tests, Windows-Arme von clippy): läuft in der Merge-Queue.Review: ausstehend (Stufe B), Root beauftragt.
🤖 Generated with Claude Code on the ProjectA server worker
Root acceptance (head ee2fb27, 2026-10-16 ~20:55 CEST)
Tier B, author family Anthropic (claude-sonnet-5-5@high, server job srv-nav-2b-20261016). Reviewers: Gemini 3.8 Flash (Google) APPROVE and Kimi K3 (Moonshot) APPROVE, both via OpenRouter on head ee2fb27. Size +73/−55 = 128. Carry-over R1641-G1/K2..K5 addressed per the report.
BetriebRoute.tsx:30-33: with a failed profile read and no project tworole="status"regions render at onceBETRIEB_PATHexport may have importersrouting.ts:24split styleVerdict: accepted.
review-okbound to ee2fb27.