mirror of
https://github.com/anomalyco/opentui.git
synced 2026-04-25 04:55:58 +03:00
[PR #436] [CLOSED] feat(core): add accessibility API with cross-platform TUI speech #534
Labels
No labels
bug
core
documentation
feature
good first issue
help wanted
pull-request
question
react
solid
tmux
windows
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/opentui#534
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/anomalyco/opentui/pull/436
Author: @muhammedaksam
Created: 12/22/2025
Status: ❌ Closed
Base:
main← Head:feat/accessibility📝 Commits (6)
da1e45efeat(core): add accessibility API layer (#423)208757dfeat(core): add cross-platform TUI accessibility (#423)8e153edMerge branch 'main' into feat/accessibilityd928bc8Merge branch 'main' into feat/accessibility778092bMerge branch 'main' into feat/accessibilitybf37dcfMerge branch 'main' into feat/accessibility📊 Changes
6 files changed (+868 additions, -1 deletions)
View changed files
➕
packages/core/docs/accessibility.md(+112 -0)📝
packages/core/src/Renderable.ts(+120 -1)➕
packages/core/src/examples/accessibility-demo.ts(+260 -0)➕
packages/core/src/lib/AccessibilityManager.ts(+257 -0)📝
packages/core/src/lib/index.ts(+1 -0)➕
packages/core/src/tests/accessibility.test.ts(+118 -0)📄 Description
Fixes #423
Summary
AccessibilityManagerwith cross-platform text-to-speech for TUI accessibilityChanges
AccessibilityManager.ts: Add node tracking, event handling, cross-platform TTSRenderable.ts: Add accessibility properties (role, label, value, hint, hidden, live)lib/index.ts: Export AccessibilityManager and getAccessibilityManagerexamples/accessibility-demo.ts: Interactive demo with focus announcementsdocs/accessibility.md: API documentation with platform requirementstests/accessibility.test.ts: Unit tests for AccessibilityManagerPlatform Support
Testing
Notes
My first approach was based on @kommander's RFC in the issue - implementing native accessibility infrastructure (AT-SPI2 D-Bus for Linux, UI Automation COM for Windows, NSAccessibility for macOS) to directly integrate with screen readers like Orca/NVDA/VoiceOver.
However, this approach is challenging for TUI applications because:
Without owning a native GUI window, registering with platform accessibility APIs (creating an HWND for UIA, connecting to AT-SPI2 registry, etc.) isn't straightforward. The implemented solution uses direct TTS calls which works immediately for TUI apps and provides accessibility announcements without needing native window ownership.
Tested on Linux (spd-say) and Windows (SAPI). macOS (
saycommand) is untested but should work as the implementation is straightforward.Open to suggestions for improving the accessibility implementation or adding additional features!
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.