Skip to content

fix(design): DS-T-05 main view offers the first step - #1629

Merged
mergify[bot] merged 3 commits into
mainfrom
claude/ds-t-05
Oct 16, 2026
Merged

mergify[bot] merged 3 commits into
mainfrom
claude/ds-t-05

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Die leere Hauptansicht des Leitstands zeigt jetzt einen ersten Schritt: ohne Projekt den Knopf „Projekt anlegen“, mit Projekt und ohne Agenten den Knopf „Auftrag einreihen“. „Projekt anlegen“ öffnet den Tab Werkzeuge, denn nur dort steht heute das Formular „Projekt hinzufügen“; „Auftrag einreihen“ öffnet den Tab Betrieb mit dem Einreih-Formular, und keiner der Knöpfe startet selbst einen Agenten. Du musst nichts entscheiden; ein Hinweis für Root steht unten unter „Abweichung vom Schnitt“.

Report

Plan-ID: DS-T-05

Package: DS-T-05 (design trust fix P1-d) · Review tier: B (frontend TS, no seam)

Goal / benefit: the empty main view names the next step instead of only saying "Noch kein Agent" / "Kein Projekt gewählt". · Parent / ticket / owner: DS-FABRIK-ZIEL, DS blueprint cut 16.10. §2.2; implementer Claude, Root accepts.
Native evidence: harness goal API not available to this server worker; the ticket goal is this brief (UMSETZEN DS-T-05).
Scope / limits / dependencies / acceptance: LeitstandRoute.tsx, LeitstandCards.tsx, de.ts (additive), LeitstandRoute.test.tsx, one docs/PLAN.md row; builds on DS-T-01 (#1623); actions only navigate (direct worker start is KR-05a, out of scope).

What changed

  • LeitstandCards takes an optional emptyAction and hands it to the existing HonestState action of its empty state.
  • LeitstandRoute: read, empty board → "Auftrag einreihen" → #/leitstand/betrieb (queue form, EinreihenForm); no project → "Projekt anlegen" → #/leitstand/werkzeuge. Both only set the hash.
  • de.ts: two new keys leitstand.addProject, leitstand.queueTask (additive).
  • Tests: two new cases in LeitstandRoute.test.tsx through render(<LeitstandRoute />), click, then window.location.hash.
  • docs/PLAN.md: the planned DS-T-05 row moved from the Pixel-Fabrik table to below DS-T-01 and states the result after merge (one row; a second row would be a duplicate-id for plan-check, scripts/lib/plan-model.mjs:23; same move as DS-T-01 in b6bb0e87).

Abweichung vom Schnitt (for Root): the cut (§2.2) named #/einstellungen/projekt as the "Projekt anlegen" target. In code that route shows the old SettingsView (test command, max workers; disabled without a project, src/App.tsx:1136-1163) and has no create form. The create form ("Projekt hinzufügen", src/components/Sidebar.tsx:209-235) sits in the old sidebar, which the shell shows only on the Werkzeuge route (src/App.tsx:907,971). Observed in the browser mock: after the click the Werkzeuge tab shows "Projekte +" with the button "Projekt hinzufügen" visible. Hence the target is #/leitstand/werkzeuge. Side note, not changed: src/screens/start/StartRoute.tsx:23 sends the Ersteinrichtung project step to #/leitstand/klassisch, where the sidebar is hidden — worth a follow-up check.

Evidence

Base b99efb71 (origin/main at start). Red commit 5b94159b (tests only), fix commit 3e1075df.

Command Exit code
npx vitest run src/screens/leitstand/LeitstandRoute.test.tsx -t "Auftrag einreihen|Projekt anlegen" at 5b94159b (red: "Unable to find role=button and name Auftrag einreihen" / "Projekt anlegen") 1
npx vitest run src/screens/leitstand/ src/i18n at fix (21 files, 222 tests) 0
npm run typecheck 0
node scripts/contrast-check.mjs (740 pairs) 0
bash scripts/ci/red-first.sh (BASE=merge-base, HEAD=3e1075df; both tests red/missing at base, green at head) 0
bash scripts/ci/secret-scan.sh before each commit 0
git push -u origin claude/ds-t-05 (pre-push hook, lane prepush at 3e1075df, 28 gates green) 0
node scripts/plan-check.mjs --offline after the PLAN row move (0 findings) 0
bash scripts/ci/gates.sh lane prepush at head 2ad770d0 (28 gates green) 0
git push origin claude/ds-t-05, then git ls-remote origin claude/ds-t-05 → 2ad770d0 0

Screenshots (1440×900, browser mock VITE_TAURI_MOCKS=true, inspected): no project → "Kein Projekt gewählt" with the tint button "Projekt anlegen"; empty board → "Noch kein Agent" with "Auftrag einreihen" beside "Braucht dich"; after the click the hash is #/leitstand/betrieb; the "Projekt anlegen" click lands on Werkzeuge with "Projekt hinzufügen" visible. Files ds-t-05-*.png in the server-side report folder of the orchestrator (not committed). No new colour, token or dependency; the button is the existing HonestState action (Button size="sm" variant="tint").

NICHT ABGEDECKT

  • Windows half: the #[cfg(windows)] Rust tests and the Windows clippy arms do not compile on Linux (KI-7); the Windows lane runs in the merge queue. This package changes no Rust.
  • The real Tauri app was not started (AGENTS.md: never launch the desktop app to inspect it); visual evidence is from the browser mock only.
  • Whether the queue can be switched off (PROJECTA_QUEUE=off) is not shown by the UI: Unknown. Hence the word "einreihen", not "starten".
  • Provider setup and emergency-stop rows of the CTA table are not part of this package (no data on the route).
  • docs/PLAN.md DS-H-00 still reads "wartet auf die Vertrauensfehler"; per the brief other rows stay with Root.

Reviews and disposition

Review: pending (tier B), Root commissions two non-author families (subscription + OpenRouter). No self-approval.

🤖 Generated with Claude Code on the ProjectA server worker

Root acceptance (16.10.2026 ~13:05 MESZ)

ID Source Severity Finding Disposition
R1629-K1 OpenRouter moonshotai/kimi-k3 medium LeitstandRoute.test.tsx:131 no-project test removes projecta.activeProjectId without restoring it rejected: beforeEach at LeitstandRoute.test.tsx:30-32 clears localStorage and sets the project before every test
R1629-K2 kimi-k3 low go() vs inline hash navigation in onOpen follow-up (consistency)
R1629-K3 kimi-k3 low empty-agents return also when only coordinator cards exist intended per DS-T-05 spec
R1629-K4/K5 kimi-k3 low assert the hint text too; no-action empty path test follow-up test hardening
Reviews on head 2ad770d: google/gemini-3.8-flash APPROVE, moonshotai/kimi-k3 APPROVE — two non-author families (Google, Moonshot; OpenRouter pair approved until 22.10.). Red-first trailers on 3e1075d (two named tests, red commit 5b94159 first). Tier B met.
Root accepts head 2ad770d.

Cuarroc and others added 3 commits October 16, 2026 12:05
DS-T-05: an empty board and a missing project leave the main view
without any next step. Both tests fail until the empty states carry
an action.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The empty main view now carries the HonestState action it already
supports. Without a project it offers "Projekt anlegen" and opens the
Werkzeuge tab, the only place where the old sidebar's "Projekt
hinzufuegen" form is shown (the Einstellungen project tab only edits an
existing project). With a read, empty board it offers "Auftrag
einreihen" and opens the Betrieb tab with the queue form. Both actions
only navigate; nothing starts a worker.

Test-First: src/screens/leitstand/LeitstandRoute.test.tsx::an empty board offers Auftrag einreihen and opens the Betrieb tab
Test-First: src/screens/leitstand/LeitstandRoute.test.tsx::without a project the main view offers Projekt anlegen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Moves the planned DS-T-05 row from the Pixel-Fabrik table so the ID
stays unique (plan-check duplicate-id).

No-Test: documentation only

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Cuarroc
Cuarroc marked this pull request as ready for review October 16, 2026 10:57
@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-16T11:02:56.900019Z 2ad770d 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: 2ad770d0aa

ℹ️ 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
| Z2-REVIEW-FOLLOWUPS-1 | Review-Folgepunkte gemäß Root-Disposition 09.10. bündeln und abgrenzen | Root bindet vorhandenen Owner | konkrete Findings, Dateien und Abnahme vor Dispatch binden | Server | nach Dateischnitt festlegen | Erledigt #800 (merged 2026-10-09T02:07:35Z, `15305c2e`); ersetzt: Geplant; kein neuer Worker aus PLAN-Eintrag | jeder Folgepunkt mit Quelle/Disposition; ≤ 300 ALL je Paket, keine erneute Abnahmebehauptung | PLAN-SYNC-0910b |
| DS-T-02 | Vertrauensfehler P1-b: `Lamp` und `Meter` zeigen Unbekanntes neutral statt grün beziehungsweise 0 % (`Lamp.tsx`, `Meter.tsx`, `inputs.css`, `KontingenteScreen.tsx`) | Implementierer · Claude; Root nimmt ab | DS-Blueprint-Schnitt 16.10. (§2.2), Designsystem-Entscheidungen D1–D7 (`docs/decisions.md`) | Server | B | Erledigt: #1610; unbekannte Lampe ist ein grauer geschlossener Ring, Balken ohne Messwert hat keinen Wert, Kontingente zeigen „Unbekannt“; Kartenlampe (`lampFor`) bleibt DS-T-03 | vier Test-First-Tests rot an der Merge-Base, grün am Kopf (`red-first.sh` Exit 0); `node scripts/contrast-check.mjs` Exit 0; prepush Exit 0; zwei Stufe-B-Reviews verschiedener Nicht-Autor-Familien: Subscription + OpenRouter; Root-Abnahme | – |
| DS-T-01 | Vertrauensfehler P1-a: die Hauptansicht unterscheidet „unbekannt“ von „leer“ (`LeitstandRoute.tsx`, `NeedsYou.tsx`, `de.ts`) | Implementierer · Claude; Root nimmt ab | DS-X-01 (#1604); DS-Blueprint-Schnitt 16.10. (§2.2), Designsystem-Entscheidungen D1–D7 (`docs/decisions.md`) | Server | B | Erledigt: #1623; Haupt sagt „Agenten werden gelesen …“, „Nicht verbunden“ mit „Erneut lesen“ oder „Kein Projekt gewählt“ statt „Noch kein Agent“, behält die Karten bei fehlgeschlagenem Nachladen („Aktualisierung fehlgeschlagen“, ohne Alter des letzten Stands) und „Braucht dich“ zeigt „nichts offen“ erst nach gelesener Liste | fünf Test-First-Tests rot an der Merge-Base, grün am Kopf (`red-first.sh` Exit 0); typecheck, `node scripts/contrast-check.mjs` und prepush Exit 0; zwei Stufe-B-Reviews verschiedener Nicht-Autor-Familien: Subscription + OpenRouter; Root-Abnahme | – |
| DS-T-05 | Vertrauensfehler P1-d: erster Schritt auf der Hauptansicht (`LeitstandRoute.tsx`, `LeitstandCards.tsx`, `de.ts`) | Implementierer · Claude; Root nimmt ab | DS-T-01 (#1623); DS-Blueprint-Schnitt 16.10. (§2.2), Designsystem-Entscheidungen D1–D7 (`docs/decisions.md`) | Server | B | Erledigt: #1629; leere Hauptansicht bietet „Auftrag einreihen“ (öffnet Betrieb mit dem Einreih-Formular), ohne Projekt „Projekt anlegen“ (öffnet Werkzeuge, dort steht „Projekt hinzufügen“); beide Knöpfe navigieren nur, der Direktstart bleibt KR-05a | zwei Test-First-Tests rot an der Merge-Base, grün am Kopf (`red-first.sh` Exit 0); typecheck, `node scripts/contrast-check.mjs` und prepush Exit 0; zwei Stufe-B-Reviews verschiedener Nicht-Autor-Familien: Subscription + OpenRouter; Root-Abnahme | – |

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 Update the newly unblocked DS-H-00 row

Once this row marks DS-T-05 complete, all trust fixes that block DS-H-00 are recorded as finished, but DS-H-00 at line 285 still says it is waiting for those fixes. Update that dependent row in the same change so the canonical plan describes the post-merge state accurately.

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 2ad770d, review-ok, required checks pass): @Mergifyio queue

@Cuarroc

Cuarroc commented Oct 16, 2026

Copy link
Copy Markdown
Owner Author

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

@mergify mergify Bot added the queued label Oct 16, 2026
@mergify mergify Bot mentioned this pull request Oct 16, 2026
30 of 46 tasks
@mergify
mergify Bot merged commit ee79b3c 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 11:08 UTC · Rule: default · triggered by merge protections
  • ✅ Checks passed · on draft merge queue: checking #1629 on main (b99efb7) #1631
  • ✅ Merged — 2026-10-16 11:21 UTC · at ee79b3c0dcf5db022ae825fe3e1437b12fc31457 · merge

This pull request spent 13 minutes 3 seconds in the queue, including 12 minutes 21 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

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