Accessibility at Slate
Slate is a web app, and this is what a live run showed on 10/29/2026. It has a skip link, labeled landmarks, keyboard shortcuts that work (n, Ctrl or Cmd+K, Escape, Enter, Space), and focus that returns to a task after you close it. An axe scan of the running app still finds real violations in light and dark, listed below, and nobody has used it with a screen reader. We do not claim a conformance level.

What Slate supports today
Each line says what the product does, how we know, and where to look. “Not yet tested” means exactly that: we have not checked, and we do not claim it.
Partly supported
Keyboard operation
A Playwright run walked the paths that matter most and all twelve steps worked: the first Tab stop is a "Skip to main content" link; n focuses the Quick Add bar from anywhere; Ctrl or Cmd+K opens the command palette, the arrow keys move through results, and Escape closes it; Tab reaches a task's check box and Space checks and unchecks it; Enter on a task's details button opens the inspector with focus inside it, and Escape closes it and puts focus back on that task. Nobody has walked sharing, bulk select, drag to reorder, or the template gallery with only a keyboard, and each task row is a button that holds a check box, which axe flags.
Evidence
- Scripted keyboard walk of the running app: 12 steps, all passing on 10/29/2026
- frontend/src/components/Tasks/QuickAddBar.tsx: the n handler, which ignores keystrokes inside a text field
- frontend/src/components/Items/ItemInspector.tsx and its test: focus returns to the opener when the inspector closes
- No walk of the sharing, selection, drag, or template flows is on record.
Not yet tested
Screen reader landmarks and labels
Nobody has used Slate with VoiceOver, NVDA, or any other screen reader. The page has one main landmark, navigation landmarks, and a banner, check boxes are named for their task, and decorative icons are hidden, but axe flags task rows whose spoken name ("Open details for ...") does not contain the text shown, and a row that holds another control. How a row reads aloud is unknown.
Partly supported
Contrast in light and dark
Accent-colored text on the accent's own tint used to measure 2.8 to 3.5 to 1 in light and 3.1 to 4.2 to 1 in dark. It now uses a darker (light mode) or lighter (dark mode) ink that measures better than 4.5 to 1 on the darkest tint, and the Archive text and template labels were raised to full-strength muted text. The live scan still finds contrast failures in every view except Tags: tag chips draw each tag's own color on a tint of itself (blue 4.35 to 1 and cyan 3.15 to 1 in light), and a few small badges are short of 4.5 to 1.
Evidence
- axe-core 4.14.0 live scan on 10/29/2026: 48 scans (12 views and dialogs, 375 and 1440 pixels, light and dark), color-contrast still reported on 11 of the 12 states
- frontend/src/accentInk.test.ts: --accent-ink at least 4.5 to 1 on the darkest measured tints, in both themes
- Before and after: 145 serious or critical findings on the first scan, 111 after the fixes below
Partly supported
Reduced motion
The design system's global stylesheet shortens animations and transitions to almost nothing when the system asks for reduced motion. Slate's own stylesheet has no reduced-motion rule, and this was read from the stylesheet, not checked in a browser with the setting turned on.
Evidence
- node_modules/@renkara/design-system/dist/tokens.css: a prefers-reduced-motion rule
- frontend/src/global.css: no prefers-reduced-motion rule of its own
Not yet tested
Text resize and zoom
Nobody has tested Slate at larger text sizes or browser zoom. Some labels are set at 10 to 11 pixels, so large text may crowd or clip them.
Partly supported
Mobile and touch
At 375 pixels wide, none of the twelve scanned states overflowed the page sideways, in light or dark. Targets such as the task check box were raised to 24 pixels, the least WCAG 2.2 asks for, not the 44 the fleet aims for. Nobody has reviewed each view on a phone by eye.
Evidence
- Page overflow measured at 375 pixels on 12 states, in light and dark, all zero on 10/29/2026
- frontend/src/components/Tasks/__tests__/SmartTaskRow.test.tsx: the check box is 24 by 24 pixels
- No by-eye review of the views at 375 pixels is on record.
No WCAG conformance level is claimed for the Slate app. Its own README sets WCAG 2.1 AA as a target and says that an earlier live audit found real violations; this page records a fresh live run, not a certification. The evidence is an axe-core scan of the running app on the StrataForge seed (12 views and open dialogs, at 375 and 1440 pixels, in light and dark) and a keyboard walk, both run with Playwright on 10/29/2026. Axe finds only part of what can go wrong, and there has been no screen-reader or zoom test. This site's own pages are scanned by the kit's axe-core run at 375 and 1440 pixels in light and dark.
More about Slate
Keyboard shortcuts
These work in the web app when focus is not in a text field.
| n | Focus the Quick Add bar |
|---|---|
| Ctrl or Cmd+K | Open the command palette (arrow keys move, Enter chooses, Escape closes) |
| Cmd or Ctrl+Enter | Save and close the task inspector |
| Escape | Close the open dialog or palette |
| Space | Check or uncheck the task whose check box has focus |
What the live scan covered
On 10/29/2026 axe-core 4.14.0 scanned Today, Upcoming, Inbox, Logbook, a project, the task inspector, the command palette, Lists, the template gallery, Tags, Profile, and the guest page, at 375 and 1440 pixels wide in light and dark (48 scans), against WCAG 2.0 to 2.2 A and AA and axe's best-practice rules.
The first scan found 145 serious or critical findings. Fixes for accent contrast, tag filter chip names, task check box size, the Archive control, the guest page's main landmark and heading, and focus return after the inspector closes brought it to 111. Tags came out clean. The rest are listed above as known gaps.
What does not work yet
- Task rows are buttons that hold a check box (axe nested-interactive and list), and a row's spoken name does not contain its visible text (label-content-name-mismatch). They need a restructured row, not a quick fix.
- Tag chips use each tag's own color on a tint of it, which can fall below 4.5 to 1 (blue and cyan measured 4.35 and 3.15 to 1 in light). The color is the user's, so a fix needs a contrast guard on the tag colors.
- Small badges and labels in a few views are still short of 4.5 to 1 on the live scan.
- No screen-reader run, and no test at larger text sizes or zoom.
- Sharing, bulk select, drag to reorder, and the template gallery have not been walked with only a keyboard.
- The Report a bug and info buttons that float over every screen sit outside any landmark (axe region).
How this site is built and checked
This site targets WCAG 2.2 level AA. That is a target we build and test toward, not a certification, and no one has audited it for conformance.
Structure
A skip link, labeled landmarks (header, navigation, main, footer), one h1 per page, and headings that do not skip levels.
Keyboard and focus
Links and buttons are native elements, so they work from the keyboard. Focus is drawn as a visible ring, and the menu closes with Escape.
Contrast
Text meets 4.5 to 1 in both the light and dark themes, checked against the stylesheet by the test suite.
Motion
Transitions and animation switch off when your system asks for reduced motion.
Small screens and zoom
Layouts hold at 375 pixels wide with no sideways scrolling, text resizes with the browser, and touch targets are at least 44 pixels.
Automated scan
Every page is scanned with axe-core at 375 and 1440 pixels in light and dark, and the checks fail on any serious or critical violation. Automated tools find only part of the problems, so this is a floor, not proof.
Images
Every product screenshot has a text description and comes in a light and a dark version that follows your theme.
Your theme choice
The theme follows your system setting until you pick one with the button in the header.
Statement last reviewed 10/29/2026.