Implement Screen Reader Accessibility Improvements in the Lumo Web and iOS Apps
As a Lumo user who relies on screen reader technology to access my iPhone, I have several suggestions that would make the Lumo app significantly easier for low vision folks to use. Because it seems the web version of Lumo behaves pretty similarly to the iOS app, I'll focus on the iOS app but do consider these same suggestions for the web app, as well.
Make prompts and responses into single focusable blocks
For an example of this, turn on the VoiceOver screen reader in iOS and observe how it behaves in the Facebook iOS app news feed. Although a Facebook post in the feed is comprised of many elements - user's photo, name, date/time, post contents, interaction controls, etc - it is treated like one single element. When you touch a post on the screen, its entire contents will be read from top to bottom, from user's name to content to interaction controls. When you single-finger flick left or right, you can very easily move up and down in the feed, from post to post, without having VoiceOver's focus land on every individual element of each post.
A Lumo response is similar, being comprised of multiple elements, but using VoiceOver with it is tough because focus lands on each element, making it tedious to read through a lengthy back-and-forth conversation. Do like Facebook and make each entire user prompt and each entire response each a single element apiece. This ties into my next suggestion.
Support VoiceOver rotar actions for sent prompts and Lumo responses
VoiceOver includes gestures to iterate through context menu-like options based on what element has VoiceOver focus. In facebook, for example, if a post in the feed has focus, the user can single-finger swipe up and down to hear different actions for that post, such as Like, Comment, Save, Hide and so on -- essentially the actions that would be logical based on the context.
For a Lumo response, these could be what currently visually apear below a response, like Good Response, Submit Feedback, Copy, etc.
Prepend an html heading (h1-h6) element to the top of each prompt and response
This can be seen in the ChatGPT web app, where there's a level 5 heading like, "You Said:" followed by your prompt, and then a level 6 heading for the response, like "ChatGPT said:". This makes it so much easier for the user to quickly locate the start of a long response or navigate back through prior prompts and responses in the conversation. Screen readers provide keyboard gestures to quickly navigate by headings.
Use ARIA "polite" regions to indicate response generation status
This is another idea we can borrow from ChatGPT. Once you submit a prompt, the screen reader announces, "ChatGPT is generating a response..." This announcement is repeated every several seconds, until the response has completed streaming. This helps the user know when they can reliably read back through the response and know its complete.
When the response is done streaming, it should trigger the screen reader to read the entire response. This makes the experience with a screen reader super seamless -- I type and send a prompt, I hear an update as Lumo generates its response, and I hear the response itself once it's ready. I want to emphasize using live region elements with the "polite" attribute, not alert elements, as alert elements are intrusive and will interrupt any currently spoken text, whereas polite regions will not be spoken if the screen reader is reading other text. THey will wait and speak the region once the speech buffer has cleared.
Display The Vertical Scroll Bar
In the iOS Lumo app, there is no scroll bar that can receive VoiceOver focus, making it challenging to scroll through a long conversation. Please make sure the standard iOS scroll bar is available, enabled, visible, active and focusable by VoiceOver.
While not a comprehensive list of what needs fixing from a screen reader standpoint in Lumo, these are some high-value ideas that would make the app so much easier and more enjoyable for blind and low vision users. Thank you for considering them!