Skip to content

fix(a11y): repair app shell landmarks#4271

Merged
jeanduplessis merged 6 commits into
mainfrom
jdp/4182-repair-app-shell-landmarks-nav-state
Jun 26, 2026
Merged

fix(a11y): repair app shell landmarks#4271
jeanduplessis merged 6 commits into
mainfrom
jdp/4182-repair-app-shell-landmarks-nav-state

Conversation

@jeanduplessis

Copy link
Copy Markdown
Contributor

Summary

Repairs app shell landmarks and keyboard navigation state across personal, organization, admin, Gastown, and Wasteland shells.

Why this change is needed

Issue #4182 identified app shell accessibility regressions: skip navigation was absent, shells exposed inconsistent main landmarks, current nav state was not announced reliably, and compact sidebar controls could be hard to target or verify.

How this is addressed

  • Added a shared skip link and normalized each shell to one focusable main#main-content.
  • Reworked sidebar active/current state tokens and touch/focus affordances.
  • Added Storybook shell coverage and Playwright assertions for app/admin shells.

Closes #4182

Verification

Manual testing performed
  1. Reviewed Storybook Components/Layout/App Shell admin and skip-link-focused stories.
  2. Captured Storybook screenshots for admin shell, personal sidebar, KiloClaw sidebar, skip-link focus, and rail focus.

Visual Changes

Storybook stories added for Components/Layout/App Shell; review in Storybook at those stories.

Reviewer Notes

Human Reviewer

  • Confirm skip link visual treatment is acceptable across Kilo dark theme and Storybook.
  • Admin sidebar now exposes a view component for Storybook parity; wrapper still owns live hooks.

Code Reviewer Agent

Code Reviewer Notes
  • AppShellSkipLink appears before shell content and targets #main-content.
  • SidebarInset no longer renders main; route layouts now provide the single main landmark.
  • E2E spec checks skip link, single main, active nav state, touch target sizes, and admin topbar height.

Comment thread apps/web/playwright.config.ts Outdated
@kilo-code-bot

kilo-code-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (3 files)
  • apps/web/playwright.config.ts
  • apps/web/src/components/ui/sidebar.tsx
  • apps/web/tests/e2e/app-shell-accessibility.spec.ts
Previous Review Summaries (3 snapshots, latest commit 0da57bc)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit 0da57bc)

Status: No Issues Found | Recommendation: Merge

Files Reviewed (4 files)
  • apps/storybook/stories/OrganizationSwitcher.stories.tsx
  • apps/web/playwright.config.ts
  • apps/web/src/app/(app)/components/OrganizationSwitcher.tsx
  • apps/web/src/components/payment/CreditPurchaseOptions.tsx

Previous review (commit fe33592)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
apps/web/playwright.config.ts 56 pnpm next dev -p ${port} skips copy:swagger-ui-assets, so /api/docs boots without the required Swagger UI CSS/JS files.

Fix these issues in Kilo Cloud

Files Reviewed (1 file)
  • apps/web/playwright.config.ts - 1 issue

Previous review (commit 07b1b1e)

Status: 1 Issue Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 1
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
apps/web/playwright.config.ts 56 pnpm run dev can bind a different port than baseURL, so Playwright may wait on or attach to the wrong server when the requested port is already in use.

Fix these issues in Kilo Cloud

Files Reviewed (19 files)
  • apps/storybook/stories/AppShell.stories.tsx - 0 issues
  • apps/storybook/stories/Sidebar.stories.tsx - 0 issues
  • apps/web/playwright.config.ts - 1 issue
  • apps/web/src/app/(app)/account-deleted/page.tsx - 0 issues
  • apps/web/src/app/(app)/components/OrganizationAppSidebar.tsx - 0 issues
  • apps/web/src/app/(app)/components/PersonalAppSidebar.tsx - 0 issues
  • apps/web/src/app/(app)/components/SidebarMenuList.tsx - 0 issues
  • apps/web/src/app/(app)/layout.tsx - 0 issues
  • apps/web/src/app/admin/components/AdminPage.tsx - 0 issues
  • apps/web/src/app/admin/components/AppSidebar.tsx - 0 issues
  • apps/web/src/app/admin/layout.tsx - 0 issues
  • apps/web/src/components/AppShellSkipLink.tsx - 0 issues
  • apps/web/src/components/gastown/GastownTownSidebar.tsx - 0 issues
  • apps/web/src/components/ui/design-primitives.test.ts - 0 issues
  • apps/web/src/components/ui/primitive-classnames.ts - 0 issues
  • apps/web/src/components/ui/sidebar.tsx - 0 issues
  • apps/web/src/components/wasteland/WastelandSidebar.tsx - 0 issues
  • apps/web/tests/e2e/app-shell-accessibility.spec.ts - 0 issues
  • scripts/dev.sh - 0 issues

Reviewed by gpt-5.4-20260305 · Input: 68.7K · Output: 10.1K · Cached: 666.9K

Review guidance: REVIEW.md from base branch main

Comment thread apps/web/playwright.config.ts Outdated

@pandemicsyn pandemicsyn left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, couple of feedback items but pre-approved

Comment thread apps/web/src/components/ui/sidebar.tsx Outdated
Comment thread apps/web/tests/e2e/app-shell-accessibility.spec.ts Outdated
@jeanduplessis jeanduplessis merged commit 75eea96 into main Jun 26, 2026
17 checks passed
@jeanduplessis jeanduplessis deleted the jdp/4182-repair-app-shell-landmarks-nav-state branch June 26, 2026 18:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(web): repair app-shell landmarks and navigation state

2 participants