From 70ae56268728b9c17924edfc6b42c21d44ab8031 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Tue, 8 Sep 2026 13:59:35 +0900 Subject: [PATCH 1/2] fix(a11y): localize the workspace skip link Match the Korean document locale and reveal the focused link as a full-width header strip so it remains readable at desktop and mobile widths. Signed-off-by: Seongho Bae --- AGENTS.md | 3 +++ frontend/src/components/DashboardLayout.test.tsx | 4 +++- frontend/src/components/DashboardLayout.tsx | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 9104dd1f4..016b1db82 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -476,6 +476,9 @@ in this repo. - Icon-only workspace controls must carry localized `aria-label` text matching the visible app language; do not rely on the SVG icon alone for Calendar, Tasks, drawer, modal, or toolbar actions. +- Keyboard-only navigation text, including skip links, must match the document + locale and must be visually checked in its focused state; a screen-reader-only + default state does not prove that the revealed control is readable. - Execution steps resulting in `Timeout`, `Fatal`, `Warn`, or `Denied` outputs are considered hard failures. Tests must run without these warnings to be considered passing. - Strix success artifacts must also be scanned for `Timeout`, `Fatal`, `Warn`, or `Denied` output before accepting clean evidence. Filter only narrowly known diff --git a/frontend/src/components/DashboardLayout.test.tsx b/frontend/src/components/DashboardLayout.test.tsx index 05dcd7669..ae3175c4e 100644 --- a/frontend/src/components/DashboardLayout.test.tsx +++ b/frontend/src/components/DashboardLayout.test.tsx @@ -98,7 +98,9 @@ describe("DashboardLayout", () => { expect(headerActionButtons).toEqual(["일정 반영", "답장 초안", "실행 항목 생성"]); expect(headerActionGroup?.className).toContain("lg:flex"); expect(headerActionGroup?.className).not.toContain("xl:flex"); - expect(skipLink?.textContent).toBe("Skip to main content"); + expect(skipLink?.textContent).toBe("본문 바로가기"); + expect(skipLink?.className).toContain("focus:right-4"); + expect(skipLink?.className).toContain("focus:text-center"); expect(main?.textContent ?? "").toContain("Inbox workspace content"); const headerEvents: string[] = []; diff --git a/frontend/src/components/DashboardLayout.tsx b/frontend/src/components/DashboardLayout.tsx index 5a2336b72..df8225425 100644 --- a/frontend/src/components/DashboardLayout.tsx +++ b/frontend/src/components/DashboardLayout.tsx @@ -328,9 +328,9 @@ export function DashboardLayout({
- Skip to main content + 본문 바로가기 {/* Sidebar removed to match branding assets */} From deebb752fb0c0095f83af79a1bb7ec33eecddef0 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Tue, 8 Sep 2026 14:12:35 +0900 Subject: [PATCH 2/2] fix(a11y): keep agent guidance in canonical docs lane --- AGENTS.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index a0cf092f6..6d856d38e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -480,9 +480,6 @@ in this repo. - Icon-only workspace controls must carry localized `aria-label` text matching the visible app language; do not rely on the SVG icon alone for Calendar, Tasks, drawer, modal, or toolbar actions. -- Keyboard-only navigation text, including skip links, must match the document - locale and must be visually checked in its focused state; a screen-reader-only - default state does not prove that the revealed control is readable. - Execution steps resulting in `Timeout`, `Fatal`, `Warn`, or `Denied` outputs are considered hard failures. Tests must run without these warnings to be considered passing. - Strix success artifacts must also be scanned for `Timeout`, `Fatal`, `Warn`, or `Denied` output before accepting clean evidence. Filter only narrowly known