Every time I sit down to write a development update on one of my projects lately, I’ve been finding it has been a considerable amount of time since I last wrote something. This was true of Snowman last week, and is also true of Extwee, my Twee 3.0 compiler, which was supposed to move from 1.5 to 2.0 in March 2021, over a year ago from this writing.
Finally moving to 2.0
I truly do not remember why I never merged the code and published Extwee 2.0 last year. I wrote a blog post explaining what I was working on and then… nothing. When I was reviewing it recently, I saw I had achieved most of my goals from the previous post but did not create a release or publish the newer version on NPM.
As of this writing, Extwee 2.0.3 is live. I did a stealth launch of 2.0.0 a few days ago and then noticed some small issues I have now fixed, which moved it to 2.0.3.
I mentioned above how I had achieved most of my goals for the project. All functionality was shifted over to static methods, which allows the individual processes of each mode (compiling or decompiling) to be used seperately and without needing to create objects. Another project should be able to grab only the parts they need via one of the multiple exports without also needing the entire Extwee codebase.
I was also able to add and test NPX command-line functionality finally. For those wanting to use Extwee without installing it in their project, the compiling and decompiling functionality can be called directly. While the preferred method to using Extwee in another project is to add it as a dependency, this is no longer strictly necessary.
I have not added the configuration file functionality. This is still a goal of the project, to use a single configuration project like WebPack or ESlint. I would like to add this at some point, but it is no longer a major TODO item for the project. I might get around to one day adding it or I may not.
Based on some work I’ve been doing on Snowman and another project, I fully expect another minor release of Extwee at some point in the coming weeks. Snowman and this other project are going to be using their own internal toolbar when editing passages, which means breaking the Twee 3 Specification (as Harlowe already does). This, in turn, will mean updating how my compiler works with story formats beyond Harlowe using this purposely undocumented functionality of Twine.