Updating extensions in the GitHub repo for Inform7 v10

It’s fixed now. As Nathanael’s comment should have made clear, you need to rebuild inweb to get the new behavior. (I tried it after just rebuilding inform and was wondering why it still wasn’t working, sigh.)

1 Like

Mr. Stelzer: I would be happy to help working on updating / debugging extensions for Scroll Thief. Loved the game, and I’m a highly skilled debugger. You can private-message me if you like. There are two extensions by you referenced in the game source which don’t appear to be published (the two with !!! next to them), which I would need in order to start test compiles.

1 Like

Thanks for the i7x script! I had to alter it quite a bit to get it working. My version is at GitHub - neroden/i7-helpers – some of the changes were just personal directory swapouts, but others you might want to adopt, since they’re either for generalization or documentation.

Already used it to spot some more things I needed to fix in extension examples (now committed).

In particular, the tools don’t like extension examples to have authors listed the way story files can:

*: "Purgatory" by Erik Temple

doesn’t work; intest will fail to add examples with authors to the catalogue, thus causing automated testing to fail.

I found a workaround:

The story author is "Erik Temple".

But this would be a useful enhancement request for intest.

The elimination of indirect() from upstream has been submitted as a bug report:

and as a pull request:

So hopefully that source of confusion will be gone soon.

OK, finished my long-suspended work on rdc-improvements and merged the changes to Emily Short’s Room Description Control and the three related/subsidary extensions into both “master” and “10.1”.

Whew! Exciting!

This was all technical work, but it definitely changed the API in a couple of subtle places, so the major version numbers got bumped. Changes were designed to reduce conflict with games and eliminate the need for a workaround previously specified in the documentation, so some games may need no changes at all, but ones which were using the workaround or doing more invasive messing with the innards of RDC will need changes.

Next project is trying to push Print Stage Detection by Taryn Michelle upstream into Core Inform, I think. :sigh: Unless people think that the approach taken by Indefinite Article Substition Fix by Matt Weiner is better. Print Stage Detection offers more flexibility, as explained in its documentation.

I have received no comments on the best approach for this yet. I don’t really think this should require an extension, which is why I want to push it upstream.


So, with a desire to be systematic, having finished going through my own extensions, I was just going through the rest of the Emily Short extensions which haven’t been ported to the 10.1 branch.

Glulx Entry Points and Glulx Text Effects have new versions in the core Inform distribution; I’m not sure what is supposed to happen here. Do we leave them out and prefer the core Inform version? I think @Dannii probably knows best; I am extremely text-oriented and have never messed around with this stuff.

The other Emily Short extensions which haven’t arrived in the 10.1 branch:

'Approaches.i7x'
'Basic Hyperlinks.i7x'
'Location Images.i7x'
'Mood Variations.i7x'
'Simple Graphical Window.i7x'

Approaches – @Zed, did you already start working on this one? The version in the Smoketest isn’t the version in the repository?

Basic Hyperlinks depends on Glulx Entry Points so probably needs to be updated for that.
Simple Graphical Window currently depends on Flexible Windows by Jon Ingold (which was essentially rewritten by @Dannii) which depends on Alternative Startup rules by @Dannii which isn’t compiling yet.
Location Images depends on Simple Graphical Window.

Mood Variations is using utterly evil black-magic I6 inclusions of the most voodoo variety. Out of sheer perversity I might attempt to update it. – UPDATE – finished it. Turned out the key was to rewrite a hunk of the I6 inclusions in I7, and it came out really clean! Great example of how to define new multi-stage say-phrases now.

The only reason this one is broken is 'cause it Includes Version 6 of Locksmith and the modern version is 13. But before just upping the version number there, I wanted to bounce this off of folks:

If you’re not using locks and keys, Locksmith isn’t relevant to Approaches. If you remove the Locksmith inclusion, then of Approaches’ 6 examples, the output differs only for the first, “Easy Keys”.

So I’d like to suggest removing the extension’s inclusion of Locksmith, and then adding a documentation note to include Locksmith or Implicit Actions by Eric Eve if you want it to work with locks (and an explicit Locksmith inclusion to the Easy Keys example).

What do folks think? This would break existing code that included Approaches and made use of phrases/definitions etc. from Locksmith but didn’t explicitly include Locksmith. So maybe it wouldn’t be appropriate to include in 9.3, but just 10.1. (Of course, fixing any broken code would just mean including Locksmith.)

1 Like

I like! I prefer my extensions independent when possible.

As a side note, there are a half dozen different versions of Inline Hyperlinks scattered through different authors’ folders, mostly dealing with different ways to fix version-related bugs. I believe mine just changed “indexed text” to “text”, with “substituted form of…” inserted where appropriate, but I’m not sure what the differences between other people’s versions are.

If we’re updating things for the new version, it might be a good opportunity to get this straightened out and come up with a single canonical version of that extension.

2 Likes

FWIW:

This is the complete list of extensions in the repo with “Hyperlinks” in their names.

./Juhana Leinonen/Vorple Hyperlinks.i7x
./Dannii Willis/Hyperlinks.i7x
./Leonardo Boselli/Tutorial Mode Hyperlinks IT.i7x
./Leonardo Boselli/Basic Help Hyperlinks IT.i7x
./Leonardo Boselli/Tutorial Mode Hyperlinks.i7x
./Leonardo Boselli/Basic Help Hyperlinks.i7x
./Emily Short/Basic Hyperlinks.i7x
./Gavin Lambert/Inline Hyperlinks.i7x
./Gavin Lambert/Hyperlinks.i7x
./Daniel Stelzer/Inline Hyperlinks.i7x
./Erik Temple/Inline Hyperlinks.i7x
./Erik Temple/Glimmr Graphic Hyperlinks.i7x

Only three of them are variants of “Inline Hyperlinks”: Erik Temple’s is the original. Daniel Stelzer’s (yours) is based on that.

Gavin Lambert’s is rewritten from scratch based on that and on Dannii Willis’s Hyperlinks, meaning it is probably the newest. Gavin Lambert also has a Hyperlinks “core event loop” framework, and a Hyperlink Extension Registry to prevent various extensions from stepping on each others’ toes! Possibly this is overbuilt – or possibly this the correct core model to use. IDK.

All depend on Eric Eve’s Text Capture, which we should probably get ported first. I may work on that.

Leonardo Boselli’s suite instead depends on Emily Short’s Basic Hyperlinks (and Text Capture, again).

Juhana Leinonen’s is for Vorple, and is even more generic, potentially opening an actual web site or executing arbitrary code. It is strictly for Vorple.

There’s also Erik Temple’s Glimmr Graphic Hyperlinks, which I didn’t look at but seems likely to be largely unused (IDK?).

And as mentioned previously, Danni Willis’s Hyperlinks.

I admit to having little idea what to make of this zoo. I am determinedly textual and typing and parser oriented. I think (but am not sure) that all (or most?) of these are designed to do some variation of the same thing, which is clickable phrases which enter a new command or do something similar. If it’s this popular, arguably there ought to be a standard extension distributed with Inform, and it ought to be integrated into the language.

But given my tastes, that isn’t a job for me.

I may, however, work on Text Capture; it probably also should be a standard extension given its low-levelness, but it needs to be updated.

1 Like

Huh, fewer than I’d thought. I was probably mixing Basic Hyperlinks and Dannii’s Hyperliks in with the others.

For Text Capture, I admit I have no real idea how to update it to the new version. It relies on a feature of the Z-machine and Glulx that lets output be temporarily redirected to a buffer in memory, and I’m not sure how well-supported raw assembly tricks are in the new Inform. (I am very curious to know, though, if anyone does.)

EDIT: Perhaps I spoke too soon. It does look like kits are written in raw Inform 6 with assembly syntax supported.

1 Like

I have updated versions of Text Capture and several Eric Eve extensions ready to go. I’ll try to get 'em out this weekend, but I can definitely do Text Capture.

re Hyperlinks, I haven’t tried porting any of the Glk stuff 'cause there’s a complication here we should hash out. Flexible Windows and most modern Glk-stuff extensions depend on Glulx Entry Points version 10/200602 as rewritten by Dannii and depending on his Glulx Definitions and Glk Object Recovery and Glk Events.

Inform v10 has as an Internal module Glulx Entry Points version 11 that is essentially the same as 6M62/9.3’s GEP 10/140425 with the I6 inclusion syntax updated.

I think it’d be generally bad and confusing for the bulk of extensions to depend on a GEP forked from the one I7 v10 ships with. Other than making a case for the current stack to be officially adopted, the alternative I see would be to make some kind of shim Glk Stuff extension that would include GEP v11 and something much like the current Object Recovery and Glk Events (but probably not Glulx Definitions, much of which is already in v11). And then it would add/modify whatever bits to (theoretically) make it a drop-in replacement for GEP 10/200602. Which is easy to say, but I don’t know how hard it’ll be in practice till someone tries it.

1 Like

Yeeeeeeah, it makes sense to have the extensions depend on the version of Glulx Entry Points which ships with Inform. Perhaps Dannii could clarify the relative merits of Dannii’s version so we can figure out to what extent and why/where the other extensions are depending on it? @Dannii There may be different approaches wanted for different features.

In the meantime, my utter disinterest in graphics means I’ll be staying away from that stack. I’ll update text-and-parser stuff, someone else can work on graphics.

That is my intention, though probably not till after 10.1 is properly released as it’s lower priority than the other tasks required before then.

2 Likes

IDK, it’s nice to get this sort of stuff rolled into the release. Though there are certainly higher-priority things (such as rolling in everything which is a straight-up bug fix).

The version of Vorple in master (and thus in 9.3) has been behind the current version for a while. @Juhana, do you still want Vorple in the Friends repo, or would you prefer to leave the Vorple repo as its canonical home? Should it be removed from 9.3 ?

1 Like

I’ve submitted pull requests to 10.1 to incorporate most of the missing Aaron Reed and Eric Eve extensions, as well as Approaches and a few others. And I made a wiki page on the Friends extensions repo to list what’s in the 9.3 branch but not in the 10.1 branch. And now maybe I’ll stop futzing with other people’s extensions so much and get to updating my own.

I don’t mind either way, but it has never made much sense to me to have a copy in the extensions repo. I’m certainly not planning to keep it up to date there in the future.

1 Like

So, I was trying to think of downsides of removing Vorple from the Friends repo, and I didn’t come up with much.

The only annoyance I can think of in removing it is potential difficulty with the strategy of making the primary “Extensions” folder in their install a checkout of the Friends repo (a strategy I use for doing work on extensions). Since Juhana’s got other non-Vorple extensions in the Friends repo, one can’t just overwrite their folder locally. But I think anyone doing that and using Vorple could drop the Juhana Leinonen folder from Vorple into the game-specific Extensions folder; Vorple’s extensions don’t change that often, and probably nobody but Juhana is going to be hacking on it much.

So: we should add a reference to Juhana’s Vorple repo in the “Where to find extensions” post on this forum, and delete all the Vorple stuff from the master and 10.1 branches. I’m not sure what should be done about the 9.3 branch, since Juhana has clearly already dropped 9.3 support – maybe pull the last version of Vorple v3 ( 3/181103 ) from Juhana’s repo and leave that in the 9.3 branch?

2 Likes

That sounds like the best solution. You’re right that the 6M62-compatible 3.x branch won’t get any updates unless someone finds a major bug there, and Inform v. 10 has “nests” which lets you have as many extension sources as you like so everything doesn’t need to be in the same place.

1 Like