Piecewise 22.02.0 Released
Hi everyone – sorry for the week-late release!
Changes to the release cadence
Before I get into the release notes, I'd like to go over some changes I'll be making to how often Piecewise updates will be released.
After sticking to once-monthly releases over the past 4 months, I've been figuring out that this sort of forced cadence is hurting the quality of Piecewise, for two big reasons:
- Features are being stalled for a particular release unnecessarily, due to personal bandwidth and a strictly-planned feature set for each milestone, and
- Features are rushed to hit a particular milestone, and they turn out to be buggy and/or low-quality.
That being said, I've decided to switch to a more flexible six-to-eight week schedule, where a release will ship when the features I have planned for it are finished. I plan on setting a soft target for release dates and use that date for the version number, and updates get closer to release, potentially write micro-blog posts that go over the features as I finish them.
Each release will continue to take place on a Tuesday, and updates will be much bigger, but they may take longer to come out. Piecewise 22.02.0 – this update – will be the last release following the “monthly” cadence. Ideally I would like to work towards another release in mid-March – exact dates TBD.
This won't change how the bleeding-edge (“aimer”) branch operates. Every time I push code online, a new version of Piecewise is built and distributed via Steam (the “aimer” branch) or itch.io (the “Bleeding Edge” file). If you're looking for the latest features and are okay with a few sharp edges in between releases, that is the way to go.
This month's content is based mainly on performance and stability fixes. That didn't stop me from shipping a few new features, though. I'll go over each of these categories in more detail.
The biggest thing I did this month involved significantly overhauling the way Piecewise loads itself. As a result, the application itself should take significantly less time to load – especially for people on hard drives (as opposed to SSDs) and people who use Windows.
Additionally, I worked a lot on reducing the size of bots in a bunch of ways. Bots should consume significantly less RAM, require less dependency downloads when installing, and be a bit tinier in raw code size. This was accomplished by running a preprocessor that simply strips out unnecessary items from the exported bot, based on the blocks you actually have placed in your workspaces. For example, if you're building a bot that works with Mastodon only, you do not need any of the Discord or Matrix functionality – so these features are stripped entirely from the bot that is run or exported.
I applied the above principle to a similar concept with Discord called “intents.” In short, intents describe what kinds of data your bot wants to receive from Discord. Previously, Piecewise used to essentially request all intents – i.e. all of the data – from Discord, which would consume unnecessary amounts of RAM and CPU. Now, Piecewise will infer the intents you'll need to request from Discord based on the blocks in your workspace.
I've worked with and have bots in production that run these changes, but if something doesn't work the way you expect, turn off code stripping in the settings menu and let me know through the feedback menu.
With this update, I've fixed a ton of bugs with help from people who have tried Piecewise via the Discord server. The Misskey integration in particular has been improved significantly, and now operates in a more predictable and bug-free manner, while the Discord integration has also seen a few bug fixes. Additionally, installing FFmpeg should now work properly on Windows.
Amidst all of the effort put into stability and performance this month, I also managed to get a few new features shipped:
Discord: Context menu items
Piecewise will now allow you to create right-click context menu items. As they share a lot with slash commands, you can create them with the
when [command type] do... block.
Misskey: Now supported by token generator
The Mastodon/Pleroma token generator now supports Misskey instances, and was renamed to indicate such.
Editor: New splash screen
I've taken the time to spruce up Piecewise's splash screen again. In addition to the new design, I also implemented icons that tell you what is loading and when, which may be useful for debugging issues starting Piecewise.
- The lightbulb indicates that the splash screen has loaded.
- The two networked computers indicate that platform integration (i.e. Steam) has loaded.
- The full cardboard box indicate that any addons or extension packs have been loaded.
- The mini audio player indicates that Piecewise has searched for audio components.
- The notepad indicates that the editor itself has loaded.
- The terminal indicates that system information has been collected (will be used if you submit feedback).
Mastodon/Pleroma/Misskey: Profile editing
You can now edit your bot's name or description (“note”) straight from Piecewise.
Editor: Block inspector
I feel like the Mastodon and Discord integrations are at the level they should be for general use, so for the next update, I'd like to get the long-neglected Matrix integration up to speed. Long-term, I'd also like to get source control working, and a more robust system for addons and their dependencies, but those are secondary.
Thanks for using Piecewise!