The big change here is a fix to Quixe which should prevent the spurious MORE prompt in fixed-size buffer windows. (This happened in HTML TADS games, for example.) I’ve been staring at that for a while now but I think I’ve taken care of it.
There are more changes, mostly under the hood. Let me know if anything seems broken.
Trying to play Captivity now, it has two scrollable windows (buffers?), the top one which shows location and turn count, and the bottom for in-/output. Whenever I enter a command the focus is automatically shifted to the top window.
I notice that Electron now supports spellchecking in the input line. (The red-dotted-line convention for misspelled words.) What do people think about this? I find it deeply annoying, but I know not everybody does.
Which leads to my main question: When I do use the --no-sandbox option, like so:
$ ./Lectrote --no-sandbox "Scroll Thief.gblorb"
I get an error dialog saying “The game file could not be read. Error: NOENT: no such file or directory, open ‘–no-sandbox’”. Then the game starts as expected. So it looks like Lectrote handles --no-sandbox correctly, but then assumes it’s also a file name?
So, the TADS saving/script problem occurs when compiling TADS from @cas’s terps repository against cheapglk too. Good to know that it’s not my fault, but unfortunately this means a fix will take some work.
So I’m pretty sure I’ve identified the issue: this part of the Glk port of TADS looks like it depends on a GARGLK extension to extract the filename from a fileref.
If you’re not compiling it against GARGLK then even though os_askfile returns a success code, the filename buffer will be empty.
The good news is that garglk_fileref_get_name is really simple:
I just tried hacking a few things together, and once this function is exposed to osglk.c it works.
So I think the path forward is to formally add this function to the Glk extensions, to add it to RemGlk, and to change the Glk port to check for a new GLK_MODULE_FILEREF_GET_NAME constant instead of GARGLK. It should probably also return a failure code if the Glk library doesn’t have the extension. Ideally before even calling glk_fileref_create_by_prompt!
Edit: first part is done: the spec
PRs for the rest are done too.