Thanks for taking my feedback so well btw
But that’s not how stream 3 works. Probably most authors will want stream 5 to act like stream 3, and not send it to the screen. If you have multiple stream 5s active at once, what happens? I’d suggest making it work like stream 3 (the most recent takes precedence, and older streams don’t get any data), but it should be explicitly said.
It’s probably also worth noting that interpreters probably won’t send the data incrementally, but only when stream 5 is closed. Actually this may need to be made a requirement - a JS stream will need everything at once. Other stream types could perhaps handle it incrementally, but that’s the cost of making it generic.
I’m also happy to remain the contact person for registering gestalts and streams, if you’d rather not.
Because @read then tokenises the data. Because it can’t handle non text data. It could be useful for sending back commands so that the player’s text input doesn’t need to be interfered with, but it’s no good for general data transfer (but writing back from output stream 5/7 would be.)
The stream could be empty, reverting to keyboard. The game could be restored and the different streams turned on or off.
I personally find branching a pain - I much prefer when it stores to a variable. Maybe most authors feel differently though… A gestalt is needed to know whether the opcode has been implemented or not. The idea for my 1.2 spec was that a very easy to implement @gestalt opcode can be added, after which all other features have gestalt selectors, and though encouraged, could be ignored if not feasible to implement. It’s an approach I’d encourage for your spec too.
Not to be too disagreeable, but why? The header flag system is pretty sucky, but duplicating the information sounds messy (what about when people forget to implement one of them etc.)