Repository navigation
feat(design): DS-X-06 RadioGroup and SwitchField - #1687
Conversation
…ngs switches Compiling stubs render nothing, so the three named tests fail until the implementation commit; the registry entries are already in place. Test-First: src/design/forms/radiogroup.test.tsx::one tab stop; arrows move and select; Home and End jump Test-First: src/design/forms/switchfield.test.tsx::label and state word are one control Test-First: src/screens/einstellungen/EinstellungenScreen.test.tsx::flags render as switches Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…me switches RadioGroup follows the Segmented roving idiom (one tab stop, arrows move and select, Home/End jump, IME-safe). SwitchField is a native checkbox with role=switch in one label together with the An/Aus state word (de.ts). The preview flags in Einstellungen and PreviewToggle use it; what the flags do is unchanged. Contrast pairs added for track and knob. Test-First: src/design/forms/radiogroup.test.tsx::one tab stop; arrows move and select; Home and End jump Test-First: src/design/forms/switchfield.test.tsx::label and state word are one control Test-First: src/screens/einstellungen/EinstellungenScreen.test.tsx::flags render as switches 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: 621e4a8a3e
ℹ️ 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".
| | DS-X-02 | Additive Design-Skalen und Breakpoint-Konstante (Fabrik-Designsystem, Welle 0): Schrift-, Abstands-, Radius-, Höhen-, Ebenen- und Fokus-Token in `src/design/tokens.css`, `BREAKPOINTS` in `src/design/breakpoints.ts` | Implementierer · Claude; Root nimmt ab | Designsystem-Entscheidungen D1–D7 (`docs/decisions.md`) | Server | B | Erledigt: #1601 (merged 2026-10-16); Tokens und Breakpoint-Konstante geliefert, Umstellung der Ansichten separat | `vitest run src/design` Exit 0; contrast-check grün; prepush Exit 0; zwei Stufe-B-Reviews fremder Familien | – | | ||
| | DS-X-04 | Fabrik-Orb und sechs Zustandswort-Aliase gemäß D4 | Root | Entscheidung D4 vom 15.10. (`docs/decisions.md`) | Server | B | Erledigt: PR #1603; statischer Orb, Aliase und Kontrastprüfung geliefert; Bildschirmeinbindung und Bewegung bleiben DS-X-23/24 beziehungsweise DN-03. | sieben Orb-Formen je mit eigenem Zeichen, sechs Aliase ohne zweites Vokabular; Belege im Report von #1603: Fabrik-/Zustands-/i18n-Tests, red-first, `node scripts/contrast-check.mjs` (740 Paarungen) und eigene prepush je Exit 0; zwei Stufe-B-Reviews fremder Familien; Root-Abnahme | – | | ||
| | DS-X-05 | Formular-Bausteine `Field` und `Checkbox` (Fabrik-Designsystem, Welle 1): `src/design/forms/{Field,Checkbox}.tsx` und `forms.css`; Beschriftung, Hinweis und Fehlertext hängen per Kennung am Steuerelement, das Ankreuzfeld kennt „teils“ | Implementierer · Claude; Root nimmt ab | Designsystem-Entscheidungen D1–D7 (`docs/decisions.md`); DS-Blueprint-Schnitt 16.10. (DS-X-05) | Server | B | Erledigt: #1678; Bausteine nur im Register und in der Galerie-Navigation, keine Ansicht umgestellt (RadioGroup und SwitchField folgen in DS-X-06) | Tests rot→grün (`red-first.sh` Exit 0); `vitest run src/design`, typecheck, `contrast-check`, `plan-check --offline` und prepush Exit 0; Bildschirmfotos hell/dunkel; ein Stufe-B-Review einer Nicht-Anthropic-Familie, Root kommissioniert | – | | ||
| | DS-X-06 | Formular-Bausteine `RadioGroup` (ein Tabstopp, Pfeiltasten wählen, Pos1/Ende springen) und `SwitchField` (Beschriftung und Zustandswort „An“/„Aus“ sind ein Steuerelement) in `src/design/forms/`; die Vorschau-Schalter unter Einstellungen › Allgemein und `PreviewToggle` sind jetzt Schalter; was die Schalter bewirken, bleibt gleich | Implementierer · Claude; Root nimmt ab | DS-X-05 (#1678); DS-Blueprint-Schnitt 16.10. (DS-X-06) | Server | B | In Arbeit: Entwurfs-PR `claude/ds-x-06`; `WegWahl.tsx` bleibt unberührt (KR-05a) | Tests rot→grün (`red-first.sh` Exit 0); `vitest run`, typecheck, `contrast-check`, `plan-check --offline` und prepush Exit 0; Bildschirmfotos hell/dunkel; ein Stufe-B-Review einer Nicht-Anthropic-Familie, Root kommissioniert | – | |
There was a problem hiding this comment.
Mark DS-X-06 complete in the post-merge plan
When this commit is merged, the canonical plan will still describe DS-X-06 as an active draft even though this same commit delivers the package. Update the row to the state that will be true after merge so scheduling and status tooling do not continue treating completed work as in progress.
AGENTS.md reference: AGENTS.md:L121-L121
Useful? React with 👍 / 👎.
| | DS-X-02 | Additive Design-Skalen und Breakpoint-Konstante (Fabrik-Designsystem, Welle 0): Schrift-, Abstands-, Radius-, Höhen-, Ebenen- und Fokus-Token in `src/design/tokens.css`, `BREAKPOINTS` in `src/design/breakpoints.ts` | Implementierer · Claude; Root nimmt ab | Designsystem-Entscheidungen D1–D7 (`docs/decisions.md`) | Server | B | Erledigt: #1601 (merged 2026-10-16); Tokens und Breakpoint-Konstante geliefert, Umstellung der Ansichten separat | `vitest run src/design` Exit 0; contrast-check grün; prepush Exit 0; zwei Stufe-B-Reviews fremder Familien | – | | ||
| | DS-X-04 | Fabrik-Orb und sechs Zustandswort-Aliase gemäß D4 | Root | Entscheidung D4 vom 15.10. (`docs/decisions.md`) | Server | B | Erledigt: PR #1603; statischer Orb, Aliase und Kontrastprüfung geliefert; Bildschirmeinbindung und Bewegung bleiben DS-X-23/24 beziehungsweise DN-03. | sieben Orb-Formen je mit eigenem Zeichen, sechs Aliase ohne zweites Vokabular; Belege im Report von #1603: Fabrik-/Zustands-/i18n-Tests, red-first, `node scripts/contrast-check.mjs` (740 Paarungen) und eigene prepush je Exit 0; zwei Stufe-B-Reviews fremder Familien; Root-Abnahme | – | | ||
| | DS-X-05 | Formular-Bausteine `Field` und `Checkbox` (Fabrik-Designsystem, Welle 1): `src/design/forms/{Field,Checkbox}.tsx` und `forms.css`; Beschriftung, Hinweis und Fehlertext hängen per Kennung am Steuerelement, das Ankreuzfeld kennt „teils“ | Implementierer · Claude; Root nimmt ab | Designsystem-Entscheidungen D1–D7 (`docs/decisions.md`); DS-Blueprint-Schnitt 16.10. (DS-X-05) | Server | B | Erledigt: #1678; Bausteine nur im Register und in der Galerie-Navigation, keine Ansicht umgestellt (RadioGroup und SwitchField folgen in DS-X-06) | Tests rot→grün (`red-first.sh` Exit 0); `vitest run src/design`, typecheck, `contrast-check`, `plan-check --offline` und prepush Exit 0; Bildschirmfotos hell/dunkel; ein Stufe-B-Review einer Nicht-Anthropic-Familie, Root kommissioniert | – | | ||
| | DS-X-06 | Formular-Bausteine `RadioGroup` (ein Tabstopp, Pfeiltasten wählen, Pos1/Ende springen) und `SwitchField` (Beschriftung und Zustandswort „An“/„Aus“ sind ein Steuerelement) in `src/design/forms/`; die Vorschau-Schalter unter Einstellungen › Allgemein und `PreviewToggle` sind jetzt Schalter; was die Schalter bewirken, bleibt gleich | Implementierer · Claude; Root nimmt ab | DS-X-05 (#1678); DS-Blueprint-Schnitt 16.10. (DS-X-06) | Server | B | In Arbeit: Entwurfs-PR `claude/ds-x-06`; `WegWahl.tsx` bleibt unberührt (KR-05a) | Tests rot→grün (`red-first.sh` Exit 0); `vitest run`, typecheck, `contrast-check`, `plan-check --offline` und prepush Exit 0; Bildschirmfotos hell/dunkel; ein Stufe-B-Review einer Nicht-Anthropic-Familie, Root kommissioniert | – | |
There was a problem hiding this comment.
Require both Tier-B reviewers before acceptance
The added acceptance criterion requires only one non-author review, which permits DS-X-06 to be accepted without the second independent family required for Tier B. The temporary review-route exception can replace the subscription reviewer with another OpenRouter reviewer, but it does not reduce the total below two; update this row to require both reviews before merge.
AGENTS.md reference: AGENTS.md:L106-L112
Useful? React with 👍 / 👎.
|
@Mergifyio queue |
|
Root auto-queue: head 621e4a8 unchanged since review-ok, all checks green. @Mergifyio queue |
Merge Queue Status
This pull request spent 13 minutes 2 seconds in the queue, including 12 minutes 15 seconds running CI. Required conditions to merge
|
Die Vorschau-Schalter unter Einstellungen › Allgemein (und der Schalter für die neue Oberfläche in den klassischen Einstellungen) sind jetzt echte Ein/Aus-Schalter mit dem Wort „An“ oder „Aus“, das zusammen mit der Beschriftung ein Bedienelement bildet. Dazu kommen zwei neue Bausteine für das Designsystem, eine Auswahlgruppe (
RadioGroup) und das Schaltfeld (SwitchField); was die Schalter bewirken, ändert sich nicht. Du musst nichts tun; die Bildschirmfotos liegen auf dem Server bereit, das Review kommissioniert Root.Report
Plan-ID: DS-X-06
Package: DS-X-06 · Review tier: B
Goal / benefit:
RadioGroupandSwitchFieldinsrc/design/forms/, feature flags in Einstellungen andPreviewToggleuseSwitchField· Parent / ticket / owner: DS blueprint cut 16.10. (DS-X-06), depends on DS-X-05 (#1678) · Claude worker.What changed
src/design/forms/RadioGroup.tsx: role=radiogroup, one tab stop, arrows move and select, Home/End jump, IME-safe (same roving idiom asSegmented, copied; no change toSegmented).src/design/forms/SwitchField.tsx: native<input type="checkbox" role="switch">plus drawn track and the state word (de.tsforms.switch.on/off) in one<label>; the word isaria-hiddenso the accessible name stays the label.forms.css:.g-rg*and.g-swf*, tokens only (knob uses--g-on-accent).EinstellungenScreen.tsxflag rows andPreviewToggle.tsxuseSwitchField; dead.es-preview-controlcss andpreviewOn/previewOfftexts removed; existing tests changed from role checkbox to switch (EinstellungenScreen.test.tsx,mount.test.tsx,scope-entry.mount.test.tsx).registry.ts: entries RadioGroup and SwitchField;scripts/contrast-check.mjs: track/glass and knob/track pairs (≥3:1);docs/PLAN.md: one row DS-X-06.WegWahl.tsx(KR-05a), no seam, no new dependency. RadioGroup is not used by any screen yet (the brief migrates only the flags).Evidence (red → green)
bash scripts/ci/red-first.sh --planExit 0;bash scripts/ci/red-first.shExit 0npx vitest run(211 files, 1588 tests) Exit 0npm run typecheckExit 0node scripts/contrast-check.mjsExit 0 (760 pairs)node scripts/plan-check.mjs --offlineExit 0bash scripts/ci/gates.sh lane prepushExit 0 (299 s, own worktree)bash scripts/ci/secret-scan.shExit 0 (also in the commit hook)pa-orch/reports/ds-x-06-light.png,pa-orch/reports/ds-x-06-dark.png(server-local files, not in the repo). Both show two switches on (An) and two off (Aus) with visible track contrast.NICHT ABGEDECKT
#[cfg(windows)]tests and the Windows lane (runs in the merge queue); no Rust code changed.gates.sh lane prepushskips browser smoke, frontend build and workflow gates (lanelinux, CI).RadioGrouphas no screenshot (no screen uses it yet).RadioGroupduplicates theSegmentedkey handling (about 15 lines) instead of sharing a hook; a shared hook would touchcontrols/.Review
Review: ausstehend (Stufe B), pending, Root commissions one independent non-Anthropic reviewer.
🤖 Generated with Claude Code on the ProjectA server worker
Root review disposition and acceptance (head 621e4a8)
Tier B (TS/CSS in
src/design/forms/, settings flags, no seam). Author family: Anthropic (Claude Sonnet 5.5, server job log). Reviewer: Coherenorth-mini-code:freevia kilo (scripts/review/run-local.sh 1687 --via kilo), reviewed head 621e4a8, verdict APPROVE WITH CONDITIONS. One non-author-family reviewer is the AGENTS.md rule 5 minimum for tier B. Root is Anthropic and does not count as an independent reviewer. The cited line numbers are diff offsets, so Root checked every finding against the head files.event.keyRadioGroup.tsx:15keys are exactlyArrowRight/ArrowDown/ArrowLeft/ArrowUp; the arrow/Home/End test is greenuseRefarray with callback refs (RadioGroup.tsx:22,45), the same roving idiom asSegmented.tsx; no extra rendersforms.switch.on/offfollow theforms.*namespace of DS-X-05scripts/contrast-check.mjsaddsswitch g-sw-on/g-sw-off / glassandswitch knob / trackat 3:1; gate exit 0 (760 pairs)PreviewTogglemisses forms.csssrc/shell/mount/PreviewToggle.tsx:1imports itvariantsvariants: []like Field/CheckboxRoot screenshot check:
ds-x-06-light.pngandds-x-06-dark.png(server reports folder) were looked at. The four preview flags show as switches with the state word "An"/"Aus" next to the label, and on and off are distinguishable in both themes. Evidence from the job: red-first exit 0, fullvitest run(211 files, 1588 tests), typecheck, contrast-check, plan-check offline, secret-scan andbash scripts/ci/gates.sh lane prepushall exit 0.Accepted by Root on 2026-10-17 for head 621e4a8;
review-okis bound to this head.