Skip to content

Conversation

@destructatron
Copy link

@destructatron destructatron commented Jan 15, 2026

What does this PR do?

This PR adds an accessibility mode for screen reader users. Animations, emojis and unicode characters add extra information to what the text to speech voice is reading, which is often meaningless and only there to look nice. These are removed in accessibility mode to make the interface cleaner and easier to read. A prime example of this is the spinner which is modified in the PR. When the spinner updates and you're reviewing text with the screen reader, it immediately loses focus because text was updated and the window changed, and in that instance the safest thing to do is focus the bottom of the window. Instead, the spinner now shows as [busy] when the AI is working. Numbering in menus is also introduced, because screen readers don't announce what TUI item is focused so in any dialog or menu, a blind user has to guess what option is selected and use the arrow keys to hopefully find the option they want. Now you type the number you want to go to, and press enter to activate it. These configs are exposed in tui.accessibility. Anyone without the config options set will not have their workflows changed and the UI will remain the same as it always has. Disclaimer, codex was used entirely to make these fixes as I'm not familiar with JS and everything around it but know other languages quite well. Fixes #8565

How did you verify your code works?

Set the config options and ran bun run dev in the packages/opencode directory and tested going to the models dialog with /models and ctrl x m, tested sessions with /sessions. Typed numbers when numbered menus were active and the menu options triggered the expected config dialogs. Disabled and enabled both options to confirm the UI preserved the original functionality and original look compared to the accessible variant. Used / to focus the search box in accessibility mode and confirmed that search worked and in the original UI as well.

@github-actions
Copy link
Contributor

Hey! Your PR title Add accessibility mode to make UI less hostile to screen readers doesn't follow conventional commit format.

Please update it to start with one of:

  • feat: or feat(scope): new feature
  • fix: or fix(scope): bug fix
  • docs: or docs(scope): documentation changes
  • chore: or chore(scope): maintenance tasks
  • refactor: or refactor(scope): code refactoring
  • test: or test(scope): adding or updating tests

Where scope is the package name (e.g., app, desktop, opencode).

See CONTRIBUTING.md for details.

@github-actions
Copy link
Contributor

The following comment was made by an LLM, it may be inaccurate:

No duplicate PRs found

@destructatron destructatron changed the title Add accessibility mode to make UI less hostile to screen readers feat: Accessibility mode for screen reader users Jan 15, 2026
@github-actions
Copy link
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@chrisVillanueva
Copy link

Please merge this contribution soon. It's a useful improvement for broader accessibility adoption.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE]:Accessibility mode for screen reader users

2 participants