Altinity / Altinity/altinity-sql-browser

Accessibility pass: ARIA on menus/autocomplete/tabs, aria-live on errors, visible focus rings

Open
#73 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
8
Forks
2
Avg merge
1h 34m
Merged PRs (30d)
6

Description

Part of #68 (Roadmap to 1.0.0) — should-have. The substantial one.

Problem

The app has almost no accessibility affordances — ~11 a11y attributes across all of src/ (mostly tabindex, one aria-hidden). For a complex SQL IDE this is a significant screen-reader and keyboard-navigation gap.

Scope
  • ARIA semantics on the custom widgets so assistive tech announces them correctly:
    • autocomplete dropdown → listbox/option + aria-activedescendant (src/ui/editor-complete.js)
    • File menu and the user/save popovers → menu/menuitem (src/ui/file-menu.js, app.js anchoredPopover)
    • query tab strip → tablist/tab (src/ui/tabs.js)
  • aria-live on the toast / error region so query errors and "session expired" are announced, not just shown (src/ui/toast.js).
  • Visible keyboard-focus rings everywhere outline:none is set without a replacement (src/styles.css:158,165,320,408,454,528,535,…). Today, tabbing through some controls shows no focus indicator.
Acceptance
  • Screen reader announces the autocomplete, menus, and tabs with correct roles/state.
  • Errors/toasts are announced via aria-live.
  • Every interactive control shows a visible focus ring on keyboard focus.
  • npm test green at the per-file coverage gate.

Largest of the 1.0 should-haves; worth its own focused pass + a screen-reader/keyboard test.


Folded in from the roadmap (#68) nice-to-haves:

  • Honor prefers-reduced-motion — a @media (prefers-reduced-motion: reduce) block that disables/limits transitions and animations (chart updates, hovers) for users who've set reduce-motion in their OS.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading src/ui/editor-complete.js, src/ui/file-menu.js, app.js, src/ui/tabs.js, src/ui/toast.js, and the listed outline:none rules in src/styles.css. Run npm test to understand the per-file coverage gate, then verify the stated screen-reader, keyboard-focus, aria-live, and reduced-motion acceptance criteria with the mentioned screen-reader/keyboard test.

Written by the indexing model from the issue text.

Assessment

Tech stack
css, javascript
Domain
accessibility, frontend, testing-qa
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.