ContextLab / ContextLab/llm-geometry

Accessibility: hover-only tooltips, misused tablist roles, and a layout table

Open
#7 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Collected by an adversarial accessibility pass during feature 005. All pre-existing; none
blocks the documentation work, but each makes real information unreachable for some users.

## 1. Hover-only tooltips (highest impact)

Token probabilities, sphere labels and residual-norm bars are all `onmousemove` /
`onmouseleave` on `role="note"` elements with **no `tabindex`**:

- `ArchChat.svelte` (reply tokens — the per-token probability and its top-5 alternatives)
- `ArchTracePanel.svelte` (token chips, norm bars)
- `GeoScene.svelte` (sphere dot labels, `pointermove`)

Keyboard users cannot reach them; touch users effectively cannot either. For the reply
tokens the tooltip is the *only* place the alternatives appear.

Fix: `tabindex="0"` plus `onfocus`/`onblur` mirroring `showTip`/`hideTip`; show the sphere
label on `pointerdown` as well as `pointermove`.

## 2. `role="tablist"` on things that are not tabs

`GeometryLab.svelte` field/layer segmented pickers carry `role="tablist"` but their children
have no `role="tab"`, no `aria-selected`, and there is no `tabpanel`. A screen reader
announces a tab list containing nothing it recognises, and the active field/layer is never
conveyed. `FinetunePanel`/`TrainPanel`/`AttentionView` set `role="tab"`/`aria-selected` but
still have no `tabpanel`, `aria-controls`, or arrow-key handling.

Fix: `role="radiogroup"` + `role="radio" aria-checked`, or drop the roles and use
`aria-pressed` on the buttons (they already behave as toggles).

## 3. The Info tab's notation table is a layout table

Four columns alternating symbol/definition with no ``/``. It is a glossary, so
assistive tech reads two unrelated pairs as one row.

Fix: a `

` with `display: grid; grid-template-columns: auto 1fr auto 1fr` — same visuals,
correct semantics, and it collapses to two columns on a phone for free.

## Already fixed in feature 005

Equation blocks and tables are now keyboard-scrollable (`tabindex="0"` on the scroll
container, `white-space: nowrap` so `overflow-x` actually engages); ``
no longer strips table semantics; `Explain` titles are exposed as headings for heading
navigation; `Explain` summaries wrap on narrow screens.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.