Repository navigation
feat(ui): migrate crash and bootstrap screens to design tokens (KR-01c) - #1552
Conversation
Test-First: src/components/BootstrapScreen.test.tsx::uses design controls without classic classes across loading and retry Test-First: src/components/ErrorBoundary.test.tsx::uses a focused design reload control and preserves crash details
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: 1c268e443a
ℹ️ 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".
| <main className="bootstrap-screen"> | ||
| <section className="bootstrap-card" role="alert" aria-labelledby="bootstrap-title"> | ||
| <span className="bootstrap-mark" aria-hidden="true"> | ||
| <main className={styles.screen}> |
There was a problem hiding this comment.
Lass den Bootstrap-Bildschirm beide Grid-Spalten überspannen
Solange bootstrapReady falsch ist, ist dieses <main> direktes Kind von .app, deren Grid weiterhin aus der 248-px-Seitenleiste und der Inhaltsfläche besteht. Durch den Austausch von .bootstrap-screen entfällt dessen grid-column: 1 / -1; der Lade- beziehungsweise Fehlerbildschirm wird daher automatisch nur in der ersten Spalte platziert, statt das Fenster auszufüllen. Verwende für den Bootstrap-Fall zusätzlich eine modulare Klasse, die beide Spalten überspannt.
Useful? React with 👍 / 👎.
| flex: 1; | ||
| width: 100%; | ||
| min-width: 0; | ||
| min-height: 100%; |
There was a problem hiding this comment.
Begrenze die eingebettete Fehlerfläche auf den Restplatz
Wenn eine der ansichtsspezifischen Error Boundaries in App.tsx auslöst, ist diese Fläche ein Flex-Element unter der mindestens 38 px hohen .viewbar. min-height: 100% zwingt sie trotzdem auf die volle Höhe von .main, sodass sie zusammen mit der Viewbar über das Fenster hinausragt; da body zugleich overflow: hidden verwendet, werden der untere Teil und bei kleinen Fenstern beziehungsweise langen Fehlermeldungen auch der Scrollbereich abgeschnitten. Für eingebettete Boundaries sollte die Fläche mit min-height: 0 nur den verbleibenden Flex-Platz belegen; ein eigener Fullscreen-Modifikator kann den Bootstrap-Fall abdecken.
Useful? React with 👍 / 👎.
| </button> | ||
| <div className={styles.screen} role="alert"> | ||
| <section className={styles.card}> | ||
| <h1 className={styles.title}> |
There was a problem hiding this comment.
Verwende für eingebettete Abstürze keine zweite H1
Bei jeder mit label versehenen View-Boundary bleibt die Seitenleiste samt bestehender Seitenüberschrift <h1 className="sidebar-brand">ProjectA</h1> sichtbar. Der neue Fallback fügt in diesem Fall eine zweite H1 für die abgestürzte Teilansicht ein und verletzt damit die bereits getestete Überschriftenhierarchie der klassischen Oberfläche; Screenreader erhalten zwei konkurrierende Seitenüberschriften. Rendere für gelabelte, eingebettete Boundaries eine H2 und behalte H1 nur für den app-weiten Fallback ohne label.
Useful? React with 👍 / 👎.
|
Root auto-queue: head 1c268e4 unchanged since review-ok, all checks green. @Mergifyio queue |
Merge Queue Status
This pull request spent 10 minutes 23 seconds in the queue, including 9 minutes 47 seconds running CI. Required conditions to merge
|
Startbildschirm und Absturzansicht verwenden jetzt das neue Designsystem.
Neuladen, Wiederholen und Fehlerdetails bleiben erhalten, die Hauptaktion erhält den Tastaturfokus.
Die lokalen Prüfungen und die Sichtprüfung in Hell und Dunkel sind bestanden; das unabhängige Review steht noch aus.
Report
KR-01c, tier B. Candidate
1c268e443a74de2661e296dca596ecb36df20d38, base2305136fd283079d8fd82530c66b4e44a999a409. Six files, 124 additions + 29 deletions = 153 diff lines.Change
Button. Import the necessary design styles so both components work outside the new shell too.Evidence (Linux, 2026-10-15)
npx --no-install vitest run src/components/ErrorBoundary.test.tsx src/components/BootstrapScreen.test.tsxbefore implementation8ae5bfb9.npx --no-install vitest run src/components src/design src/i18nnpm run typechecknpm run buildnode scripts/contrast-check.mjsnode scripts/ci/ratchet.mjs checkbash scripts/ci/red-first.shgit diff --check origin/main...HEADbash scripts/ci/secret-scan.shbefore each commitbash scripts/ci/gates.sh lane prepush(unpiped, own worktree)git push -u origin codex/kr-01c-error-bootstrapgit ls-remote origin codex/kr-01c-error-bootstrapnode .pa/kr-01c-capture.mjs(local evidence harness)Test boundary: rendered public React components; only browser
window.location.reloadis replaced in the unit test. Existing component tests remain. The isolated browser fixture additionally executes real reload and retry actions.Screenshot observation
Inspected all six 1440×900 images in the external evidence directory
kr-01c-shots:loading-light.png,loading-dark.png,retry-light.png,retry-dark.png,crash-light.png,crash-dark.png. Both themes show centered token-colored cards, readable headings and detail text, and a visible focus outline on the primary action. The loading state exposes no invented progress or retry action. Crash details wrap within the card. Captures use reduced motion. Images and the local harness are handover artifacts, not application files.NICHT ABGEDECKT
#[cfg(windows)]tests (including ConPTY/DPAPI/npm shim cases) or Windows Clippy arms. The Windows lane runs in the merge queue.Review and handover
Review: ausstehend (Stufe B). Root schedules one reviewer from a non-OpenAI family, then handles acceptance and merge queue. No independent review has been claimed, and this worker has not marked the PR ready or queued it.
Worker goal: checked implementation and draft handover for KR-01c, within the approved classic-UI-removal parent goal. Native goal tools were available (
get_goalinitially returned no goal; the bounded worker goal was created). Product acceptance, review and merge remain with Root. Remaining action: review this exact head, then integrate through the queue.Review disposition (Root, round 1, 2026-10-15 15:57 MESZ) — head 1c268e4
Tier B; author OpenAI (Codex). Reviewers: Anthropic claude-sonnet-5-5 (APPROVE) and Google gemini-3.8-flash (APPROVE, no findings).
.bootstrap-*/.error-boundary*rules in styles.css now unusedNo high or medium finding. review-ok bound to 1c268e4 once CI is green at this head.