Skip to content

Accessibility and Appearance

QenTerra edited this page Jul 29, 2026 · 1 revision

Accessibility and Appearance

Unspool follows macOS interaction and accessibility conventions instead of building a separate custom accessibility mode.

Keyboard support

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.

VoiceOver

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.

Reduce Motion

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.

Reduce Transparency

The navigation rail inspects accessibilityReduceTransparency. When transparency is reduced, surfaces use solid graphite fills instead of relying on material effects for separation.

Increase Contrast

Palette and surface components use semantic separators, primary and secondary text roles, and focus-ring treatments that remain visible when macOS requests increased contrast.

Appearance

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.

Manual acceptance

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.

Clone this wiki locally