Zoom moves into a new Accessibility section (the section keeps its
section-zoom id, which layout plugins anchor to) next to:
- Message text size, 80 to 200 %, separate from Zoom: messages, threads,
forum posts, code blocks and the message boxes.
- Line spacing (normal, relaxed, loose) and letter spacing (normal, wide).
- Font: the theme's, the system's, Atkinson Hyperlegible or OpenDyslexic,
self-hosted under SIL OFL 1.1 with their licenses in /fonts.
- High contrast: secondary text and borders pulled toward each theme's own
text color, and a thick focus ring.
- Reduce motion: follow system, on or off. One html.reduce-motion class now
covers every animation, the theme effects, the shimmering role colors,
smooth scrolling, and GIFs, animated emoji and profile pictures, which
wait for hover or tap. The old prefers-reduced-motion rules use it too.
- Underline links, and larger click targets.
Everything is per device and applied by theme-init.js before first paint,
which hands the same read/apply functions to the settings page.
Also: keyboard focus rings, keyboard-reachable settings nav rows,
aria-labels on the icon buttons in the channel header and message box, and
aria-pressed on the picker buttons.
Co-authored-by: ancsemi <ancsemi@gmail.com>
All opt-in; nothing changes until someone picks a setting.
- Keep official mode on (Settings > Chat, saved on the account as
users.official_mode, every device follows through set-official-mode /
official-mode-changed). The megaphone then rests armed, so staff don't
re-arm it for every message; pressing it sends just the next message
plain. The client still sends highlight: true per message, so the wire
format and the server's checks are unchanged.
- Official messages look (Settings > Chat, per device): Badge (the default,
as before), Colored text (the text and a lighter wash in the role's color,
a thinner bar, no badge; text mixed with the theme's own text color, more
of it on light themes), or Off.
- With Colored text, consecutive official messages from one person group
into one block. Badge keeps every official message's own header.
- session-info carries features: ['highlight_messages', 'official_mode'] and
officialMode, so apps can tell what a server supports.