-
Notifications
You must be signed in to change notification settings - Fork 0
Accessibility and Appearance
Unspool follows macOS interaction and accessibility conventions instead of building a separate custom accessibility mode.
The core Browse workflow supports:
- Command-click for noncontiguous selection;
- Shift-click for a visible range;
- Command-A for visible eligible rows;
- Escape to clear selection;
- keyboard focus for rail destinations, search, filters, rows, and actions.
Buttons and menus use textual accessibility labels even when the visual presentation is symbol-only.
Important elements expose stable labels or values:
- Browse, Downloads, and Settings rail buttons;
- Telegram connection state;
- chat rows;
- filter controls;
- attachment rows and selection state;
- extension badges hidden when their information is already included in the row's combined accessibility content;
- queue state and progress;
- settings controls.
An attachment row reports whether it is selected or why it is ineligible. Actions are attached to the semantic row rather than relying only on pointer context menus.
Routine transitions use short, restrained motion. Components that animate
selection or navigation inspect accessibilityReduceMotion and remove or
simplify those transitions when requested.
The visual system avoids spring, bounce, and scale effects for normal state changes. Progress remains understandable from text and values without animation.
The navigation rail inspects accessibilityReduceTransparency. When
transparency is reduced, surfaces use solid graphite fills instead of relying
on material effects for separation.
Palette and surface components use semantic separators, primary and secondary text roles, and focus-ring treatments that remain visible when macOS requests increased contrast.
System is the default appearance and follows macOS. A user can explicitly select Light or Dark in Settings.
The design language is Soft Graphite:
- neutral monochrome surfaces;
- white primary accent;
- restrained separators;
- color reserved for semantic connection, warning, success, and failure states;
- stable row geometry;
- text-based extension badges rather than inconsistent media thumbnails.
Automated UI tests check the existence and navigation of important controls, but release acceptance still requires hands-on verification with:
- VoiceOver reading order and actions;
- full keyboard navigation;
- Reduce Motion;
- Reduce Transparency;
- Increase Contrast;
- System, Light, and Dark appearances;
- long filenames and Dynamic Type-equivalent macOS text scaling behavior.
Unspool is an independent project and is not affiliated with Telegram. Repository · Privacy · Security · MIT License
- Getting Started
- Detailed Telegram Setup
- Feature Overview
- Chats and History
- Attachments and Filenames
- Search and Selection
- Download Workflow
- Conflicts and Recovery
- Download History
- Settings
- Accessibility
- Troubleshooting
- Detailed Troubleshooting and FAQ
- Privacy and Security
- Detailed Security Model
- TDLib Integration
- Persistence
- Concurrency and Errors
- Glossary