Repository navigation
fix(design): DS-T-04 compact search keeps its accessible name - #1609
Merged
Merged
Conversation
…ed, DS-T-04) The header search button has no aria-label; its name comes only from the visible span and the shortcut chip, which header.css hides with container queries as the search shrinks. With both hidden, the button has no name. Test-First: src/shell/header/header.test.tsx::search trigger keeps a permanent accessible name Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The header search button now carries aria-label with the same text as its visible label (WCAG 2.5.3 Label in Name). One constant feeds both, so the hardcoded-string ratchet does not grow. header.css may still hide the text and the shortcut chip as the search shrinks; the name stays. Regression-For: 7f1d3cd Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No-Test: plan status row Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Cuarroc
marked this pull request as ready for review
October 16, 2026 02:16
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. |
Contributor
|
@Cuarroc Dieser PR hat einen Konflikt mit main und kann nicht in die Merge-Queue. Bitte main hineinmergen (kein Rebase, kein Force-Push) und den Konflikt loesen; das Label |
…ict) Both table rows are kept unchanged: the DS-T-04 row of this PR and the DS-X-02 row that arrived with main. No other edit. No-Test: merge of main, conflict resolution only Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Owner
Author
|
Root auto-queue: head 1de6ed7 unchanged since review-ok, all checks green. @Mergifyio queue |
30 of 46 tasks
Contributor
Merge Queue Status
This pull request spent 12 minutes 22 seconds in the queue, including 11 minutes 59 seconds running CI. Required conditions to merge
|
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Die kompakte Suche oben in der Kopfzeile behält jetzt immer ihren Namen „Seiten und Befehle suchen“, auch wenn bei wenig Platz Text und Tastenkürzel ausgeblendet werden. Vorher war der Knopf in diesem Zustand für Bildschirmleser namenlos; jetzt trägt er denselben Namen wie seine sichtbare Beschriftung. Optisch ändert sich nichts, und du musst nichts entscheiden.
Report
Plan-ID: DS-T-04
Package: DS-T-04 (P1-c from the DS blueprint cut, 16.10.) · Review tier: B (AGENTS.md, rule 5)
Goal / benefit: the header search trigger keeps a non-empty accessible name at every width (WCAG 2.5.3 Label in Name). · Parent / ticket / owner: design trust fixes DS-T-01…05, Root accepts.
Scope / limits / dependencies / acceptance: only
CommandPalette.tsx+header.test.tsx(+ PLAN row); no seam, no new dependency, no visual change, no CSS change. Baseorigin/main@e21710de.What changed
src/shell/header/CommandPalette.tsx: one constantSEARCH_LABELfeeds both the visible<span>and a newaria-labelon the trigger button. Before, the button's name came only from the<span>and the<kbd>chip, andheader.css:11-12hides both through container queries (≤239 px chip, ≤119 px text), which left the button without a name. One constant instead of two literals, so thesrc/i18n/hardcoded.test.tsratchet does not grow (the baseline already lists this string).src/shell/header/header.test.tsx: new testsearch trigger keeps a permanent accessible name. It renders<CommandPalette />, checksaria-label, then setsdisplay: noneon thespanandkbd(whatheader.cssdoes) and finds the button by its exact name.docs/PLAN.md: oneDS-T-04row in the Z2 table next to the other DS rows, worded as true after merge.Commits:
7f1d3cde(red test,Test-First:),431b967a(fix,Regression-For: 7f1d3cde…),f32550f0(PLAN row,No-Test:). Diff: 3 files, +15/−2.Evidence
npx vitest run src/shell/header/header.test.tsx -t "permanent accessible name"at7f1d3cde(before the fix): fails,aria-labelisnullaria-labelassertion removed temporarily (not committed):Unable to find an accessible element with the role "button" and name "Seiten und Befehle suchen". The name check alone is red too, so jsdom honoursdisplay:noneherenpx vitest run src/shell/header/ src/shell/scope.test.tsx src/i18n/hardcoded.test.tsafter the fix: 7 files, 55 testsbash scripts/ci/red-first.sh(basee21710de, head431b967a): red/missing at the merge base, green at head,red-first: OKbash scripts/ci/gates.sh lane prepushatf32550f0: all 27 gates green (incl. typecheck, lint, fe-test, clippy, rust-suite, red-first-plan)npm run typechecknode scripts/contrast-check.mjs: all 712 pairs passgit ls-remote origin claude/ds-t-04→f32550f0077d0ba24c52def96afcb389f6157e98Visual: there is no visual claim.
aria-labeldoes not render, and no CSS changed, so there is no screenshot.Process note: the start check right before the prepush run reported 2 other cargo builds running on the server (
STOPP cargo), and the lane still started because it was chained in the same command. It finished with exit 0. RAM was 9.5 GB free.npm run plan:checkexits 1. Its findings for this row:DS-T-04 #1609: done / GitHub OPEN, which is expected because the row states the post-merge truth as ordered. The other findings (PLAN-CLEAN-1/2, open DS PRs without rows) were already there before this change. This is not a gate.NICHT ABGEDECKT
#[cfg(windows)]tests and the Windows arms of clippy did not run (Linux server). The Windows lane runs in the merge queue. This package changes no Rust.linux, CI).display:none. Follow-up (not in this package, per the cut): a Playwright case ine2e/glass-layout.spec.tswithlocator.boundingBox()after fix(layout): DS-X-01 settings tab strip, settings grid, empty Betrieb, header breakpoint below 1440 #1604 merges, because fix(layout): DS-X-01 settings tab strip, settings grid, empty Betrieb, header breakpoint below 1440 #1604 changes that file.aria-labeloverrides content.aria-keyshortcutswas not added: its literal would grow the hardcoded-string ratchet. The chip stays visible and is unchanged.getByRole).Reviews and disposition
Review: pending (tier B), Root commissions. Two non-Anthropic reviewers from different families; the author is Claude.
Open points
f32550f0on basee21710de. Next step: Root commissions the tier-B reviews.🤖 Generated with Claude Code on the ProjectA server worker
Root acceptance (16.10.2026 ~04:20 MESZ)
Conflict resolution (16.10.)
Mergify labelled the PR
conflictafter #1596/#1597/#1598/#1601 and later PRs merged. Resolved with a merge commit (no rebase, no force-push); the Root acceptance above is bound tof32550f0, so the delta below needs its own review (Root commissions it, non-Anthropic family).c6516d4e547ea00c9cbce6f8034484c3f30983ab(origin/mainafter fix(store): Z4-M4B-0 in-transaction planning authority check #1607).docs/PLAN.md(Z2 table, both sides added a row at the same place). Resolution: both rows kept, wording unchanged (DS-T-04from this PR first,DS-X-02from main second); only the three conflict marker lines were removed. No other edit.docs/PLAN.mdonly. Check: the resolved file differs fromorigin/main:docs/PLAN.mdby exactly the oneDS-T-04row, and both rows are byte-identical to their sources (diffof each row, exit 0).1de6ed78a05507d3738590aeeffaad03a43dabbb(merge commit, parentsf32550f0andc6516d4e; trailerNo-Test: merge of main, conflict resolution only).git merge origin/main(conflict indocs/PLAN.mdonly)git diff origin/main...HEAD --stat: onlydocs/PLAN.md(+1),src/shell/header/CommandPalette.tsx,src/shell/header/header.test.tsx(3 files, +15/−2, same as before the merge)npm run plan:checkafter the merge: 12 findings (19 before the merge); for this row still onlyDS-T-04 #1609: done / GitHub OPEN(expected, unchanged); no new finding for this row; the rest belong to other PRsbash scripts/ci/secret-scan.shbash scripts/ci/gates.sh lane prepushat1de6ed78: all 27 gates green (incl. typecheck, lint, fe-test, clippy, rust-suite, red-first-plan)git push -u origin claude/ds-t-04(fast-forwardf32550f0..1de6ed78, pre-push hook ran the lane again)git ls-remote origin claude/ds-t-04→1de6ed78a05507d3738590aeeffaad03a43dabbbNICHT ABGEDECKT (delta): the Windows half (
#[cfg(windows)]tests, Windows clippy arms) did not run on this Linux server; the Windows lane runs in the merge queue. Not set: ready, labels, merge.🤖 Generated with Claude Code on the ProjectA server worker
Root re-acceptance after conflict merge (16.10.2026 ~07:20 MESZ)
Conflict resolution 1de6ed7 (merge of main c6516d4; PR diff vs main: docs/PLAN.md +1 own DS-T-04 row, CommandPalette.tsx, header.test.tsx). Delta/full-diff review: OpenRouter google/gemini-3.8-flash (Google) at 1de6ed7: APPROVE, no findings. Required checks pass on 1de6ed7. Root accepts head 1de6ed7.