diff --git a/docs/branch-review-records/196a129d152e41b7d7af1e82b2a335d905520acf60450bcfb3925cd089df6c32.record.md b/docs/branch-review-records/196a129d152e41b7d7af1e82b2a335d905520acf60450bcfb3925cd089df6c32.record.md new file mode 100644 index 0000000000..408a4255d1 --- /dev/null +++ b/docs/branch-review-records/196a129d152e41b7d7af1e82b2a335d905520acf60450bcfb3925cd089df6c32.record.md @@ -0,0 +1 @@ +| 2026-08-18 | claude/dictionary-mode-ui-updates-uwoicy (PR #2132) | db3069a5312ac272da47199dcc97662f8f90b08b | Run PR sweep: CI fix + threads + drift | No fix needed: all required in-scope checks (static-pr, safety, coverage, build, production-ui-critical, production-ui, changes) passed on head db3069a5; PR required only failed because lighthouse-budget was cancelled with no real failure. 0 unresolved review threads (3 PR comments are bot rate-limit notices only, no action needed). Branch is behind main (cleanly mergeable per git merge-tree) so attempted git merge origin/main -> push; merge itself was clean with zero conflicts (docs/ledger files only, no code/package-lock changes), but the push was blocked by the local ledger-write-discipline guard (guard-push.mjs): merging main's later reconciliation commit alongside this PR's own still-pending docs/outstanding-issues-inbox/91536913-....json request made the guard see a 'partial reconciliation' (31 items moved to applied/, 1 retained) even though the retained item is this PR's own unrelated new request, not part of main's completed batch. Did not override with SKIP_LEDGER_WRITE_GUARD=1 per hard guardrail to heed pre-push blocks; reset the local unpushed merge commit back to origin's tip so no drift was introduced. PR head remains db3069a5 (unchanged), nothing pushed. | git merge-tree --write-tree origin/main (clean, exit 0); attempted git merge origin/main + git push (blocked by guard-push.mjs ledger-write-discipline check, not overridden); no provider-backed checks run | diff --git a/docs/branch-review-records/1c99cd1f4f7fc28a1bae4d20b72bac77c80665af8487cac6441b92e183bf5922.record.md b/docs/branch-review-records/1c99cd1f4f7fc28a1bae4d20b72bac77c80665af8487cac6441b92e183bf5922.record.md new file mode 100644 index 0000000000..74cb7835d9 --- /dev/null +++ b/docs/branch-review-records/1c99cd1f4f7fc28a1bae4d20b72bac77c80665af8487cac6441b92e183bf5922.record.md @@ -0,0 +1 @@ +| 2026-08-18 | claude/dictionary-mode-ui-updates-uwoicy | 31a2e4aaaf9bb991be51f9bbb735f57505ff70af | Dictionary a11y + zero-state + Browse header replay after #2114 merged mid-branch (PR #2132) | approved | lint, typecheck, test (673 files/7276 tests), ui-dictionary Chromium 6 passed, axe sweep of 6 dictionary routes | diff --git a/docs/outstanding-issues-inbox/91536913-6cd9-4c61-a109-4d9aa3e76b9d.json b/docs/outstanding-issues-inbox/91536913-6cd9-4c61-a109-4d9aa3e76b9d.json new file mode 100644 index 0000000000..8835b8bb91 --- /dev/null +++ b/docs/outstanding-issues-inbox/91536913-6cd9-4c61-a109-4d9aa3e76b9d.json @@ -0,0 +1,14 @@ +{ + "version": 2, + "id": "91536913-6cd9-4c61-a109-4d9aa3e76b9d", + "createdOn": "2026-08-18", + "action": "add", + "payload": { + "pri": "P3", + "type": "issue", + "summary": "Shared search chrome fails axe landmark rules on every mode: composer content sits outside any landmark and the universal header renders a second banner", + "detail": "An axe sweep of the six Dictionary routes at 1440px (2026-08-18, PR #2114) found two violations that are not Dictionary's: `region` (3 nodes — the composer label, the `#answer-composer-privacy-warning` span, and the privacy link, all outside any landmark) and `landmark-no-duplicate-banner` + `landmark-unique` on detail routes, where the global `#search` universal header renders a second banner landmark beside the app header. Both are moderate impact, both reproduce on routes that branch never touched (/dictionary/browse, /dictionary/compare), and both live in shared chrome — master-search-header / global-search-shell — so they affect all 13 modes, not one. Repo axe gates only fail on critical/serious, which is why this has never gone red. Next: wrap the composer privacy row in the composer's own landmark (or give it `role=\"group\"` with a label) and decide which of the two headers keeps `banner`; then widen tests/ui-accessibility.spec.ts to assert the landmark rules, not just critical/serious. Deliberately out of scope for PR #2114 — a shared-chrome change under a Dictionary PR is the wrong blast radius.", + "source": "Session 2026-08-18, PR #2114 axe sweep; @axe-core/playwright wcag2a+wcag2aa+wcag21a+wcag21aa+best-practice at 1440x900", + "issueUlid": "01M0AGQ074WJDQ0X6HCNKBS335" + } +} diff --git a/src/components/dictionary/dictionary-catalogue-pages.tsx b/src/components/dictionary/dictionary-catalogue-pages.tsx index f993531047..e562cbe11d 100644 --- a/src/components/dictionary/dictionary-catalogue-pages.tsx +++ b/src/components/dictionary/dictionary-catalogue-pages.tsx @@ -259,13 +259,18 @@ export function DictionarySearchPage() { })} ) : ( -
+ // The empty state wears the same card as the result list. Bare on + // the page background it read as a rendering failure rather than an + // answer, and the advice named a filter even when none was applied. +
)}
@@ -348,9 +361,6 @@ export function DictionaryBrowsePage() {

Browse terms

-

- Scan the same source-linked result system by letter or abbreviation. -

@@ -388,7 +398,10 @@ export function DictionaryBrowsePage() { + ) : null} +
+ )}
- +