I’ve ranted about this before, but I’ve long believed that GUI Glk interpreters should have a separate input box for the player to type in, instead of what we do now, where the input box is inside the transcript.
The traditional IF UI is a commonplace stdio application, but stdio is totally unheard of on the web.
Consider this bog standard IF transcript:
At End Of Road
You are standing at the end of a road before a small brick building.
Around you is a forest. A small stream flows out of the building
and down a gully.
> east
Inside Building
You are inside a building, a well house for a large spring.
There are some keys on the ground here.
There is tasty food here.
There is a shiny brass lamp nearby.
There is an empty bottle here.
> examine lamp
It is a shiny brass lamp. It is not currently lit.
> get lamp
Taken.
The feeling of play is conversational. You might imagine that the game is playing the role of a Dungeon Master in Dungeons and Dragons, where the player and game are taking turns speaking.
If you’d never heard of stdio, and you were coding a “conversational” game today, you’d probably take examples from chat-based apps like Discord/Slack, where there’s a fixed input box at the bottom of the screen, and a transcript of messages in the main part of the window.
But that is not at all how IF games work (not how they have ever worked historically). Instead of having a separate “input box” into which you type commands, there’s just one main window area, the “transcript.” The game prints messages into the transcript, then prints a prompt symbol (the > symbol) and lets the user type directly into the transcript.
To extend my D&D metaphor, you might imagine the Dungeon Master writing something on a piece of paper, then handing that same piece of paper over to the player, who would write something at the bottom and then hand the paper back to the Dungeon Master, taking turns writing on the page.
That creates bugs that are hard to fix (impossible to fix?) for screen readers and on mobile, and IMO it created the bug bg reported here.
You can’t focus on an <input> in the transcript when the input prompt is scrolled off the screen, so nothing was focused at all, making the page appear to be unresponsive.
But you absolutely could keep focus on the <input> if the input is fixed to the bottom of the screen.