diff --git a/docs/roadmaps/03_WEB_ROADMAP.md b/docs/roadmaps/03_WEB_ROADMAP.md index 18b60ad..1b543d5 100644 --- a/docs/roadmaps/03_WEB_ROADMAP.md +++ b/docs/roadmaps/03_WEB_ROADMAP.md @@ -35,7 +35,7 @@ Stack: Next.js 16 + React 19 + TypeScript - [x] Artifact/attachment UI - [x] Task extraction/review UI - [x] Workspace filters and saved views -- [ ] Keyboard navigation improvements +- [x] Keyboard navigation improvements - [ ] Dense knowledge UX polish # Phase W3 — Agent UX @@ -103,6 +103,11 @@ Stack: Next.js 16 + React 19 + TypeScript - denser search result rows with status/owner/workspace metadata - operator workflow summary cards on dashboard and reviews - workspace owner visibility for denser knowledge navigation + - Hardened shared accessibility/keyboard affordances with: + - skip-to-content support in the shared shell + - stronger focus-visible treatment for interactive controls + - clearer active-nav semantics via `aria-current` + - keyboard/accessibility guidance surfaced in navigation/settings # Open Questions @@ -133,7 +138,7 @@ Stack: Next.js 16 + React 19 + TypeScript - Artifact upload/download UX - Extraction-backed task review flows - Backend-backed agent activity timeline, approval queue, proposal diff review, and audit filtering -- Dense keyboard navigation, accessibility hardening, and performance polish +- Remaining dense/accessibility polish and performance hardening - Remaining verification: - run `npm test` diff --git a/web/src/components/AppShell.tsx b/web/src/components/AppShell.tsx index 327ee56..d5b9596 100644 --- a/web/src/components/AppShell.tsx +++ b/web/src/components/AppShell.tsx @@ -14,15 +14,26 @@ export function AppShell({ }) { return (
+ + Skip to main content + -
+
-
+
-
{title}
+

+ {title} +

{description}
- {actions ?
{actions}
: null} + {actions ?
{actions}
: null}
{children}
diff --git a/web/src/components/Sidebar.tsx b/web/src/components/Sidebar.tsx index c8a2177..ea93037 100644 --- a/web/src/components/Sidebar.tsx +++ b/web/src/components/Sidebar.tsx @@ -18,7 +18,7 @@ export function Sidebar() { const pathname = usePathname(); return ( -