You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #216 (the P0 modal/keyboard/live-region issues). These are friction-level and cosmetic a11y findings from the same audit on claude/repo-audit-issues-jsleb5.
P1 — significant friction
Second wave of icon-only buttons without aria-label/Tooltip, distinct from the ones already fixed in the recent a11y pass: src/components/CategoryManagement.tsx:150, src/components/ProjectManagement.tsx:172,185.
src/pages/ProjectList.tsx:189-195,255-264, src/pages/Categories.tsx:111-127 — Edit/Restore/Delete buttons collapse to icon-only on mobile (hidden sm:block label) with no aria-label fallback, unlike sibling buttons in the same row.
src/components/CategorySheet.tsx:161-169 — Color-swatch picker buttons are 24×24px, no aria-label/aria-pressed, under the 44px touch-target guideline.
src/components/ArchiveFilter.tsx:60-70 — Expand/collapse trigger has no aria-expanded/aria-controls tied to the filter panel.
src/components/PlannedTaskCard.tsx:165 — Icon-only MoreVertical dropdown trigger has no aria-label ("Task options"); also 28px, under the touch-target minimum.
src/components/StaleDayDialog.tsx:43 — Intentionally blocks Escape/overlay dismissal with no reason surfaced to AT users. Add aria-describedby explaining why dismissal is disabled.
Hardcoded green-/blue-/gray- Tailwind colors instead of semantic/Radix tokens (project rule violation, also a likely contrast/dark-mode risk): AuthDialog.tsx:72,128-129, ExportDialog.tsx:397-446, TaskEditDialog.tsx:442, StartDayDialog.tsx:69,106-107, ArchiveEditDialog.tsx:338,355,549-551, ArchiveItem.tsx:144-168,297,303, DaySummary.tsx:25-65, CategoryManagement.tsx:127-133, ProjectManagement.tsx:146, SyncStatus.tsx:78,81,86, UserMenu.tsx:30, InstallPrompt.tsx:114, UpdateNotification.tsx:66,83.
src/components/BackgroundTimerNotifier.tsx:50-53 — document title/OS notification update with elapsed time, but nothing in-page mirrors this for SR users with the tab focused.
Unlabeled form fields: ExportDialog.tsx:278,304 (date range <label>s not paired via htmlFor/id), TaskEditInArchiveDialog.tsx:135-138 (<Label> missing htmlFor).
Background
Follow-up to #216 (the P0 modal/keyboard/live-region issues). These are friction-level and cosmetic a11y findings from the same audit on
claude/repo-audit-issues-jsleb5.P1 — significant friction
aria-label/Tooltip, distinct from the ones already fixed in the recent a11y pass:src/components/CategoryManagement.tsx:150,src/components/ProjectManagement.tsx:172,185.src/pages/ProjectList.tsx:189-195,255-264,src/pages/Categories.tsx:111-127— Edit/Restore/Delete buttons collapse to icon-only on mobile (hidden sm:blocklabel) with noaria-labelfallback, unlike sibling buttons in the same row.src/components/CategorySheet.tsx:161-169— Color-swatch picker buttons are 24×24px, noaria-label/aria-pressed, under the 44px touch-target guideline.src/components/ArchiveFilter.tsx:60-70— Expand/collapse trigger has noaria-expanded/aria-controlstied to the filter panel.src/components/PlannedTaskCard.tsx:165— Icon-onlyMoreVerticaldropdown trigger has noaria-label("Task options"); also 28px, under the touch-target minimum.src/components/StaleDayDialog.tsx:43— Intentionally blocks Escape/overlay dismissal with no reason surfaced to AT users. Addaria-describedbyexplaining why dismissal is disabled.green-/blue-/gray-Tailwind colors instead of semantic/Radix tokens (project rule violation, also a likely contrast/dark-mode risk):AuthDialog.tsx:72,128-129,ExportDialog.tsx:397-446,TaskEditDialog.tsx:442,StartDayDialog.tsx:69,106-107,ArchiveEditDialog.tsx:338,355,549-551,ArchiveItem.tsx:144-168,297,303,DaySummary.tsx:25-65,CategoryManagement.tsx:127-133,ProjectManagement.tsx:146,SyncStatus.tsx:78,81,86,UserMenu.tsx:30,InstallPrompt.tsx:114,UpdateNotification.tsx:66,83.role="status"/aria-live:SyncStatus.tsx:69-86,UpdateNotification.tsx:54-103,PwaUpdatePrompt.tsx:14-41.src/components/BackgroundTimerNotifier.tsx:50-53— document title/OS notification update with elapsed time, but nothing in-page mirrors this for SR users with the tab focused.ExportDialog.tsx:278,304(date range<label>s not paired viahtmlFor/id),TaskEditInArchiveDialog.tsx:135-138(<Label>missinghtmlFor).P2 — minor/cosmetic
aria-hidden="true":ExportDialog.tsx:182,187,StartDayDialog.tsx:69,108,ArchiveEditDialog.tsx:338,549,StaleDayDialog.tsx:47,DaySummary.tsx:28,40, empty-state icons inClientManagement.tsx:136,233,CategoryManagement.tsx:100,ProjectManagement.tsx:118.AppSidebar.tsx:121,Navigation.tsx:58-62— logo<img alt="Logo">redundant with adjacent "Timetraked" text; should bealt=""+aria-hidden.TaskTrackingPanel.tsx:103,162,MarkdownDisplay.tsx:15-17,Navigation.tsx:56— arbitrary color classes, no dark variant.pages/NotFound.tsx:19— plain<a href="/">instead ofLink(full reload).KanbanColumn.tsx:53-58— countBadgehas noaria-labelcontext (e.g. "4 tasks").CategorySheet.tsx:184-186,ProjectSheet.tsx:298-300— helper text not wired viaaria-describedbyto the checkbox it explains.Origin
Surfaced during the usability/performance/security audit on
claude/repo-audit-issues-jsleb5.