Screen reader not reading long responses in Parchment

Okay, so I’ve finally played through Trinity through to the title screen and can see what’s happening. (I was playing Release 12/860926.) When you enter the door it shows the title screen, but only in the upper window, which is usually just the status window. The main window is erased and kept empty, while it waits for a keypress. And as only the main window is set to be an ARIA live region there’s nothing for the screen reader to automatically read out.

This is a tricky situation without any obvious solutions. I don’t think we want to make the upper/status window a live region - I doubt that screen reader users would want it read out each and every turn when in the majority of cases the only thing that is going to change is the turn counter. If you actually would like that, well I’ll be very surprised but let me know.

I have one idea though. @BlueAskew sounded like it could be good for the status window to be set to role=status but with aria-live=off, so that it doesn’t automatically read out the status window every turn. What if I made it so that the status window was turned into a live region if it has more than 3 lines, and then turned off if it goes back to 3 lines or less? This would mean that things like the Trinity title page, as well as box quotes and menus would be read out when they happen, but normal status windows would not be live regions, including expanded status windows, like the compass rose in Bronze.


Okay, I’ve made these changes:

  1. Set inactive <input> boxes to aria-hidden. But, I’m not sure if there will be an issue for windows that send input and then immediately request input again, because their <input> box will briefly become aria-hidden before becoming aria-hidden=off again. If that change in status confuses screen readers then I can change it so that it only becomes aria-hidden when we’re sure that input won’t be requested again for a while.
  2. Set buffer windows to have role=log. Probably no real functional change.
  3. Set grid windows to have role=status, but with aria-live=off. Except, as I explained above, for when there are more than 3 lines, in which case it will be aria-live=polite.