Piecewise Blog

Build chat bots with blocks.

Attention testers: Closed beta copies will be removed from your library before midnight Pacific tonight. Projects created using the beta version of Piecewise will be able to be opened with the release version, so make sure you have them saved! Thanks for testing Piecewise and for your feedback.

Hi everyone, happy Sunday! I can't believe release is less than two days away – I've spent the past nearly three weeks making sure Piecewise is ready for the first public release. In this final “dev log” before release I'll go over the biggest changes that have been made to Piecewise over the past couple of weeks, and what to expect in Early Access.

What's new

Various fixes and improvements to Mastodon support

There's too much to write a coherent paragraph here for, so here are the highlights:

  • Added interacting with (favorite/repeat) statuses
  • Added the ability to determine notification types
  • Added listening to direct and public timelines
  • Added the ability to determine the bot's relationship with another user (following, muted, etc.)
  • Fixed replying to posts
  • Added the ability to specify a spoiler for statuses and mark them as sensitive
  • Added the ability to determine whether a post is a repeat of someone else's, and if so, determine the original poster
  • Fixed “look up status” being hidden

Also, I went through and documented all of the Mastodon blocks.

Various fixes and improvements to Discord support

I also made some improvements to Discord support:

  • Added “can start embedded activities” to “user has permission” block
  • Added additional flags to “message is (publishable/pinnable/etc.)”: “is reply” / “is thread OP” / “is crosspost” and similar
  • Added “message pinned” event
  • Added “get reference message” block (to fetch the original message a message is a reply to)
  • Added the ability to “send message as...” (send a message with a different author and avatar using webhooks).
  • Added the ability to specify minimum parameter count for chat commands. Invocations that do not have the required number of parameters are ignored.

Backpacks

A few weeks ago, I implemented Blockly's “backpacks” into Piecewise.

Backpacks

Dragging blocks to the backpack allows you to save those blocks for later. The contents of the backpack save immediately and aren't project or workspace-specific. This is useful because, for example, you might put a login block or a function you frequently use into a backpack to use it across projects. For more info about backpacks, you can check out the dedicated documentation page here.

Block weighting and organizing

Blocks are now weighted properly within their categories to better reflect what you might be looking for. Blocks that you might use most are located closer to the top of the workspace, and blocks that might be used less are located at the bottom. Right now these are hard-coded values, but I've been considering tracking the blocks you use and tailoring the layout to the blocks you place.

Toolbox sorting

If you have any feedback about the current layout, please feel free to reach out.

More pitfall warnings

Piecewise will now notify you when you're missing a block that's dependent on another (i.e. provider-specific blocks being dependent on their login/configuration), or trying to schedule tasks in a loop – both major pitfalls that may cause you headaches. Here are some examples of what these warnings look like:

Provider-specific block not configured

Scheduling tasks in a loop

Custom themes and renderers

The latest version of Piecewise allows you to create custom themes using CSS styling. Here is an example of a custom theme:

Ocular canvas theme

When themes are a little less buggy, I'll document further how they work.

You can also now change how blocks are rendered – Blockly comes with three renderers by default, the geras (normal) renderer, the thrasos renderer, and the zelos renderer (which makes blocks look more like Scratch) – and you can switch between them from the “Piecewise –> Preferences” menu.

Templates

It's now possible to create “templates” that users can copy, edit, and create their own projects on.

Template info screen

Piecewise ships with a few templates by default, but feel free to create your own by saving a normal project with the “.pwt” extension.

Internal code and pipeline fixes

The less sexy part of these updates is the tons and tons (and tons) internal refactoring, bug fixing, and tuning I do – this made up at least half of the total work I've done in the past three weeks. However, the return on investment of these fixes allows me to work on Piecewise quicker and in a more maintanable manner.

Other small fixes

I've also made a bunch of other tiny fixes:

  • Started requesting that your computer stays on when a bot is running
  • Fixed various bugs in the ffmpeg downloader
  • Added “this is taking longer than it should” to splash screen when Piecewise is taking too long to load
  • Added trace logging, which allows me to further see what Piecewise is doing
  • Started rotating logs every launch
  • Updated Electron to 16.0.0-beta.3
  • Shortened block names when linking to them in documentation if their names are too long
  • Fixed block validity checker sometimes not checking blocks
  • Added more documentation for extension blocks
  • Added sad Blue when an error occurs
  • Fixed demos ending immediately
  • Fixed demo crashing on Linux
  • Fixed options menu hanging
  • Fixed windows flashbanging you when they open (sorry dark mode users!)
  • Added block shadows to a bunch of toolbox items

What to expect during Early Access

Now that I've gone over what's changed in Piecewise, I want to quickly go over what to expect during Piecewise's early access period.

There will be one major Piecewise release every month, and it will be numbered with the year (i.e. 21) and month (i.e. 11). The first release will be 21.11.0. The current plan is that new features and breaking changes will generally come out at the beginning of every month – after the initial feature release, there may be a few bug fix releases.

I don't plan to do this often, but if I break compatibility with the current version of Piecewise in the next version, I plan to support it for at least a month after the new version with bug fixes, to give you time to move over to the new version. The latest version of old major releases should always be available via Steam beta branches or as separate downloads on itch.io.

The aimer branch will continue to function and will be pushed to every time I submit a code change. If you like living on the bleeding edge, enter dreamoflazurite in Piecewise's Properties –> Betas menu, but I make no guarantees that versions pushed to this branch will work or that compatibility will be kept between aimer and stable releases (or even aimer and aimer releases).

Dev blogs will probably slow down to once a month. I'll definitely post a dev log when I announce the new release, but I may also post a new dev blog in the middle of the month if there's a feature I'm particularly excited about shipping in the next month.

Conclusion and looking ahead

I've already started working on Piecewise 21.12, and I'm already excited about first new feature I'll ship, which will be adding piecewise:// URLs (i.e. piecewise://jump/discord_login). These URLs currently allow you to jump to blocks and open online templates, but I'd also like to make it easier to share blocks this way by allowing you to give the person you're sharing with a URL.

I continue to surprise myself with the progress I've made over the past few months and I'm very excited to share Piecewise with everyone on November 2nd at 10am Pacific! If you haven't already, please add Piecewise to your Steam wish list and feel free to join us on Discord or on the Steam Community forums.

Hi everyone, happy Monday Wednesday Thursday Wednesday! It's time for another weekly update!

Release Date

Barring any major delays or problems, Piecewise will be releasing onto the Steam Early Access program on November 2, 2021 at 1pm US Eastern! (An itch.io release will come later.) All of the features I plan to ship with Piecewise are complete – the last feature I had to finish was stickers – so I'm confident enough to announce a solid release date. Of course, release is not the end – I plan to continually update Piecewise with more platforms, features, extension blocks, and documentation as time goes on.

Thanks to all of the early-early access testers for their feedback and help in shaping Piecewise 1.0! The comments I've received were incredibly informative and I will continue to appreciate and accept comments throughout Piecewise's development.

New in Piecewise this week

(These changes will all be on the stable branch very soon – within a few hours of this blog post.)

New splash screen

Piecewise now has two “mascots” – and I added them as an animated splash screen. :)

new splash screen!

FFmpeg installer revamp

The FFmpeg installer before this week was depressing – you clicked a button, were warned about a license, and then given zero feedback until installation was complete. This week, I worked a lot on fixing that so you don't click the button, get confused, and think there's nothing happening.

new FFmpeg installer!

Pasting blocks at your cursor

When you paste blocks that you've copied, they show up right next to the block you've copied, which might clutter your workspace.

oh howdy new neighbor. kinda getting claustrophobic though

Now, you can enable pasting at your cursor in the Piecewise preferences screen (it is not enabled by default because it could be confusing to new users), so you can choose to paste blocks wherever you want, as long as your cursor can get there.

aahhh, some space

This also has the side effect of allowing what I like to call Piecewise Art™.

please excuse my programmer drawings

Chat command parser

In lieu of command interactions (slash commands), you can now accept programmable commands the old way: through chat.

hello world!

Chat commands can also have arguments/parameters:

hello, pink!

Stickers

Piecewise now has full support for stickers. Keep in mind you'll have to be Boost level 1 or above to use them, and bots can only use stickers within the server they were created.

will you sign my sticker book

Zoom and grid

Two smaller changes I made this week were adding zoom buttons (they're in the bottom right), and allowing blocks to be snapped to a grid (this is a setting that is not turned on by default). Both of these tools should allow projects to be significantly more organized.

Documentation

Every single Discord block should now be documented. Right click the block and then click “Help” to open the documentation browser.

this took me 4 hours, though it's kinda my fault for leaving it all for now

More problem checks and enhancements to previous problem checks

Piecewise will now let you know when you're missing a connection that's required.

now fix it

I also fixed a lot of bugs with the context problem checker last week, though problem checkers are still relatively experimental and not perfect, so please pardon the dust. If you find any bugs with these, please let me know using the in-app feedback tool.

Miscellaneous bug fixes and improvements

  • Fix discord_interaction_reply showing as invalid in contexts where it really is valid
  • Fix Save as... not working for cloud files
  • Fix switching voice channels not being counted as a join/leave
  • Allow spaces and dashes in cloud files
  • Show a cloud emoji in Discord rich presence instead of steam:
  • Add text (haystack) contains text (needle)
  • The Piecewise window is now resizable on Mac and Linux (currently disabled on Windows due to a Chrome/Blockly bug)
  • Add help menu in title bar
  • Add users banned from server (guild), user is banned from server (guild)
  • Fix about and preferences windows being resizable

Conclusion and looking ahead

Dev blogs may slow down for the next few weeks as I work mainly on smashing bugs, putting together test bots and finding issues, and handling some administrative work. Outside of that, I'd like to really refine the problem checkers to make sure they work properly in most cases, and make changes to the editor based on feedback.

If you've found a bug, or have any questions, comments, or concerns, don't hesitate to report feedback in-app, post on the Steam Discussions, or join the Discord server.

Have a great rest of your day!

Hi everyone, happy Monday Wednesday Thursday! This week brought a lot of changes to Piecewise, so let's just dive right in:

New this week

New blocks

I released a few of blocks relating to obtaining information and manipulating server invites. The target server of invite and target channel of invite are now available, along with a slew of fixes relating to how the previously-released invite blocks work.

There were also a few miscellaneous additions to the block library: clear activity, user (user) is bot owner, and owner of bot.

Slash commands are now top-level

You no longer have to declare slash commands within a block. This makes much more sense from a logic standpoint, and is how the soon-to-be-released “text command” blocks will work.

Steam Cloud

Remember how I said that Steam Cloud was working and I just had to wait for an update to the UI library? Well, it happened, and much earlier than expected... because of that, Steam Cloud now works great!

My Steam Cloud files (mostly trash)

You can save files (alphanumeric only right now) to the Cloud and they will be kept safe. You can even open/modify/save Cloud files on different computers, should you want to work on the go.

Steam Achievements

I added Steam Achievements to Piecewise, just because. Unlock all 15. Or don't, I'm not your mother.

I think long achievement names are funny. But that's just me.

Voice support

(currently in the aimer branch)

Piecewise can now play sound in Discord voice channels. Once you've installed FFmpeg (in Tools –> FFmpeg), you'll be able to use the play sound at location [location] in channel [channel] block to micspam to your heart's content. Play some Rick Astley MP3s and annoy your friends, or link up a radio stream and create 24/7 music for your community.

ooooh, give you up

(Psst! In case you didn't know, you can share block screenshots from Piecewise that look like the above and drag the resulting images into Piecewise to import them right into a project.)

Console redesign

(currently in the aimer branch)

Okay, I HEARD YOU. I knew the console looked incredibad and understood that SOMETHING needed to be done about it. However, I was having trouble figuring out a good place to put it – I didn't want to reduce the amount of space that blocks could be placed on, but I also wanted to make sure that the console had enough space that it would still be useful.

I eventually settled on a design that I ended up liking a lot. I've moved the console to the bottom, and made the entire pane – including the show/hide button – more opaque, so it's easier to see. I've also made the last line of the console always show, similarly to a “status bar.” Initial feedback has told me that this is so much better than the right drawer; and I personally like having the status bar available for quick debugging.

Hey Lois, it's IE7!

Invalid block placement warnings

(currently in the aimer branch)

In some cases, Piecewise will now warn you if you try to place blocks in a places they aren't valid. Let's take this example:

The “bot started” event does not send a “channel”, so this placement would just return an error.

[Error] Error: event channel block was found, but was not attached to a valid event

Piecewise will now detect these cases and raise a warning if necessary.

check your stuff budd-O

The documentation site also has information on this. For example, the 🔔 channel block specifies where it can be used:

Only valid in: 🔔 when (event) do (statement)

Only valid in events: message, message deleted, reaction added, reaction removed, message updated, voice video stopped, voice stream stopped, thread created, thread deleted, thread leave, thread join, channel created, channel deleted

The Piecewise demo is now available on Steam!

ICYMI, the Piecewise demo is now available to download for free from Piecewise's Steam store page. Read more about it in its dedicated blog post here.

Conclusion/looking ahead

This coming week will probably be a less productive week, but I'd still like to get stickers working – this is the last feature I planned to ship before releasing Piecewise into Early Access, so being able to get ahead on that would be great.

I also need to work on getting information to the user about the FFmpeg install because right now you click OK at the prompt and then... nothing happens... for a few minutes... while the process works. A few users were totally confused about what was happening and I don't blame them at all.

Anyway, that wraps up this devlog! As usual, you can find me on the Piecewise Steam community forums and Discord server if you have any questions, comments, or concerns. You can also submit feedback about Piecewise through the built-in collection form.

Hi everyone! Starting today, a demo of Piecewise is now available via Steam! If you'd like to give Piecewise a try, don't hesitate to download the demo from the Steam Store page for free.

The demo includes access to the Discord service and placement of up to 25 blocks. If you upgrade to the full version of Piecewise when it releases this November, you'll also be able to:

  • Place unlimited blocks
  • Save and load your projects
  • Run your projects for an unlimited amount of time
  • Export and run your projects anywhere
  • Create or purchase Piecewise extension blocks
  • Utilize all of Piecewise's platforms and Internet features
  • Share and import functions to and from the community
  • Utilize Steam Cloud and earn up to 15 Steam Achievements

If you have any feedback about the demo, feel free to let me know by clicking “Submit feedback” from within Piecewise, or by writing to me on the Steam community forums or Discord.

Hey Testers! I will not be releasing any Piecewise builds on the default or “stable” branch until about Friday, 8 October. However, I may continue to release builds on the “bleeding-edge” branch. This branch is updated whenever I push code to the internal Piecewise depot, and while it contains the latest features, may require updating multiple times per day and is considerably less stable than the main Early Access release. To opt-in to bleeding-edge Piecewise updates:

  1. Right-click Piecewise in your Steam library, and click “Properties”.
  2. Click “Betas”.
  3. In the “passcode” box, enter dreamoflazurite.
  4. You'll be given the option to switch to the aimer branch.

I'll have more to share about this in the next devlog.

Thanks for using Piecewise!

Good early morning, everyone, happy Wednesday! Sorry for the radio silence over the past few weeks, I've had some personal matters to attend to and nothing too exciting was happening on Piecewise's front. But without further ado, let's go over the new updates to Piecewise over the past few weeks.

New this week

Mastodon support

As a warm-up after taking a few weeks' break from Piecewise, I started working on getting support for the decentralized social networking platform Mastodon (and Mastodon-compatible platforms, like Pleroma) into Piecewise. This is a feature some of Piecewise's current testers have been requesting, and I was happy to oblige. Support is not complete quite yet, but those looking to develop smaller-in-complexity bots have everything they need to get started.

Mastodon token generator

Generating the tokens (like passwords) to log in to Mastodon-compatible platforms is a bit of a pain, so I also wrote a small application that will allow you to obtain tokens for accounts using a nice GUI. As with everything in Piecewise, it's still very WIP.

Mastodon token generator

Give feedback in-app

Another huge addition was a new feedback collector for Piecewise in-app. Clicking the revised “alpha” banner will pop open a window where you can share a short blurb reflecting your thoughts, your system information, a screenshot of what you were doing, and any log files Piecewise emits.

In-app feedback

Splash screen

The last feature I wrote in this week was a new splash screen for Piecewise. Instead of a blinding, twitchy, and disorienting white screen, Piecewise will now show a tiny window with the logo before it's ready.

Splash screen

Steam Cloud

A feature I was working on before my break that will unfortunately not quite make it before the Early Access release is Steam Cloud support. When it releases, it will be likely only be available for x86-64 processors only (i.e. not Apple silicon or PCs running ARM processors), though I hope to have Apple silicon support ready next year.

The whole system is designed, written, and working, but confusing technical issues – likely relating to my use of unsupported, bleeding-edge versions of Piecewise's user interface framework – are keeping me from shipping this feature outside of my development environment. I really hope to have these issues sorted out by the end of November as Steam Cloud is something I personally would look for in an application like Piecewise.

Conclusion and looking ahead

The past week was big for Mastodon support, but I've also been planning and designing features relating to Discord support. I plan to put a lot of effort into chat commands (i.e. commands activated by a prefix, such as !, in lieu of slash commands) and creating blocks for interacting with stickers, invites, and voice this week. These features are the last parts of Piecewise I'd like to finish before officially being “ready” for the Early Access release later this quarter.

If you have any feedback about Piecewise or what you're seeing in these posts, I'd love to hear from you. Feel free to let me know what you're thinking on our Steam community forums or on Discord.

Hello everyone, happy Monday! It's time for another dev log. If you didn't already know, I'm the developer of Piecewise, a tool that you can use to build chat bots with blocks. You can wishlist Piecewise on Steam here and request early-early access to Piecewise on the Web site.

Let's get into it. This week was a more boring week than most; a considerable amount of the work I completed this week was refactoring internal components to make them faster and more efficient. However, there are still a few user-facing changes I'll share:

Welcome screen

The welcome screen has seen a few changes. Firstly, I've added a few sections that dynamically-update: the list of tutorials on the top right, and the list of recent news on the bottom right. I still have to adjust the weighting of the tutorials a bit on the documentation site so that they show up in a logical order. I also made the “drag a block to your workspace...” more clearer based on user feedback. And finally, I added the logo/mascot at the top right.

new Welcome screen

I did also experiment with having the Welcome screen show full-screen, but I didn't really love how it looked and thought it would be potentially more confusing.

full-screen Welcome screen

Preferences and About windows

I created a new Preferences pane and About window, that do what exactly they say on the tin. The Preferences pane is a bit sparse right now, but I do plan on adding additional options to adjust this week.

Preferences

About

Locking and unlocking Discord threads

Remember when I said last week that locking worked? Well, I thought it did, but it didn't... for silly reasons.

Though Discord consolidates this all into one action in the client itself, “locking” a thread and “archiving” it are two independent processes. An archived thread is not locked by default; only when the “locked” variable is set to “true” is the thread actually locked. And to make things even sillier, you cannot set the “locked” variable to “true” if the thread is already archived. As a bonus, the “locked” parameter sticks – so if you unarchive the thread, and then re-archive the thread (without explicitly locking it), it will reappear as locked ...what?

Anyway, since this is incredibly confusing and doesn't really match any kind of behavior that the user might expect, “locking” a thread sets the “locked” variable to “true” and then the “archived” variable to “true”. When you “unarchive” a thread in Piecewise, it is always unlocked automatically, so just plain archiving a thread without locking it works exactly as you'd expect.

sigh

Custom interactible IDs

Previously, when you created an interactible in Piecewise (i.e. a button or a dropdown menu), you always had to specify what happens when that interactible is interacted with. However, if you ever stop/restart your bot, this information is lost.

inline interactible dropdown

If you intend to write a bot where these interactions should be able to be accessed for a long period of time – i.e. with a role bot – you should set a custom ID for your interaction and then respond to it via the “when interaction received” event.

inline interactible dropdown with ID

responding to interaction

I plan on writing an in-depth tutorial on working with interactibles sometime soon.

Documentation

Though less exciting, most of my user-facing work this week was changes to how the documentation is displayed and structured.

When right-clicking a block and then selecting “Help” from the dropdown, you'll now be redirected to Piecewise's documentation site.

Human-friendly errors

human-friendly errors

Some errors have been annotated with more user-friendly error messages, and a link to the documentation to find more information (here's an example of such a page). I plan on expanding this as time goes on and I receive more reports from users.

Documentation sidebar

The sidebar of the documentation site has always been a disorganized mess, so I cleaned it up a bit.

First, I figured out how to make it so that categories were expandable – so you don't have a barrage of pages showing up on the left, hiding the documentation entries on the bottom. Then, I started re-weighting the categories so they showed up in an order that made sense, and ... tada, the site now looks significantly less overwhelming.

new sidebar

Where is this block?

A very unsexy part of my work this week was rewriting a significant chunk of the code that loads blocks into the Toolbox. However, as part of this change, the documentation generator now knows where almost every block belongs in the Toolbox, allowing me to show that info on the documentation site.

Block previews

There are now previews of each block on the documentation site. However, how I size the block isn't quite perfect, yet. For example, blocks where all of the inputs are inline are sized great on the page:

single-line block

But blocks where the inputs aren't inline aren't sized as well:

multi-line block

I plan to work more on this over the next week.

Conclusion

Hopefully, in the next week, I'll be able to have more to show off – I plan on finishing up Discord support, making more adjustments to documentation, adding more preferences to adjust, and setting up a Fediverse instance.

Have any questions, comments, or concerns? Let me know on Discord or Steam.

Hi everyone! I'm the solo developer of Piecewise – a tool you can use the build chat bots with blocks. In short, instead of using and memorizing complex code syntax, you use a friendly and familiar interface – based on the Blockly framework – to build chat bots.

Build chat bots with blocks

Piecewise is still in (very) active development, and I'm planning on releasing the program as an Early Access preview sometime during Q4 2021.

I plan to write a new blog post here writing a short summary of the changes I've made to the software once a week, and the changes I plan to make in the upcoming week, to give you a better idea of what my development process looks like and what you can expect in the full release of the program. I'll also talk about things in a fairly candid manner – feel free to let me know what you think about my progress (or anything else). Apply for early-early “pre-alpha” access to Piecewise for free at https://piecewise.im/.

Tip: See a block screenshot? Save the PNG file and drag it into Piecewise to add it to your project.

Documentation update

This week saw a large documentation update. The documentation now contains information related to whether a parameter is required and more information on each parameter. I haven't yet run through all of the blocks with this new update, but by the Early Access release everything should be up-to-date.

Eventually, the plan is that you'll be able to right-click any block in Piecewise and it will open your browser to the matching documentation for the block.

Defer interaction responses

Discord requires that when an interaction (i.e. a slash command, button press, or dropdown select) is triggered, a response be sent back within three seconds. Sometimes, you may need to extend this deadline – i.e. to interact with a service that might be slow. Using the “defer interaction response” block, the deadline will be extended to 15 minutes, and the user will be notified that the bot is “thinking.”

Block example of sending a deferred interaction response

A deferred interaction response

Ephemeral responses to Discord interactions

In addition to deferring an interaction response, you can now also specify whether to respond “ephemerally” to an interaction. “Ephemeral” responses act similarly to regular responses, but are only shown to the user and disappear after a set time. You can respond ephemerally to any interaction.

Block example of sending an ephemeral response to a command

An ephemeral response to a command

Locking threads

Piecewise previously only allowed you to archive and unarchive threads. “Archiving” a thread allows it to be reopened by anyone with the “Send Messages in Threads” permission, whereas “locked” threads can only be unlocked by those with the “Manage Threads” permission. An option has been added to the “(operation) thread” block to allow you to lock and unlock threads.

Lock/unlock thread block

Demo mode

Piecewise now has a demo mode to allow those who are interested to evaluate it before purchasing. The demo version:

  • is limited to placing 25 blocks
  • does not allow project saving, loading, or exporting
  • only allows the Discord block set
  • does not allow any shared blocks features
  • does not allow the use of extension blocks

Piecewise's demo mode

I am not sure whether this feature will become generally available, but if I decide to ship it, it will be a separate, free download available from Piecewise's Steam store page.

Optimizing build and release processes

I spent a lot of time this week optimizing my distribution processes in an attempt to make it less expensive (both in effort and cash) and quicker (so changes get to you faster). What initially prompted this change was the fact that the demo is a totally separate application with its own build processes compared to the regular version of Piecewise.

I did a lot of experimenting with caching build dependencies, automating some processes I used to do manually... and, ironically, none of this work ended up being worth it, at least when reducing build times. Before the changes, builds used to take about two-and-a-half to three minutes – after, they were taking about six (oops!).

While I did revert many of the changes I made, not all was lost. I now have a more cohesive build matrix, I've worked on making setup for each build a less-manual affair, and, to save time, demos are only built when a new “mainline” version of Piecewise is released.

I do plan on working much more with Piecewise's distribution system in the future.

UI updates

There were two major updates to Piecewise's UI this week. The first one was a much-requested “dark mode.” To put it lightly, it is ... not perfect. I'll need to work on colors, opacity, and making the whites LESS BRIGHT. But it's a start.

Dark theme!

If you didn't notice in the above screenshot, workspaces got a little tweak also to just hold their numbers. I think this makes everything look a little less crowded. Also, hovering over a workspace tab slightly illuminates it, similarly to the Blockly toolbox.

New workspace UI

Disabling workspaces

You can now disable workspaces entirely by right-clicking their tabs. Disabled workspaces have their tabs slightly less opaque, are be ignored when running your bot, and cannot be built in or switched to. Re-enable a workspace by right clicking it again.

Disabled workspaces

The new Piecewise Web site

I also designed a new Piecewise Web site to bring it up to “modern” and “attractive” design standards. It's also now available at https://piecewise.im/.

The new site

Experiment: Realtime

I experimented a lot last week with a “real-time”, shareable version of Piecewise that operates like Google Docs. And it works... sort of.

The new site

What is not pictured is what happens when the other client does something. Moving blocks and editing them works great! Creating blocks, sadly, does not – I spent hours trying to debug an “infinite” loop Blockly creates when spawning in a new block.

So I've shelved this experiment for now, but I still think this feature is cool and will try to take a harder look at it post-Early Access when I'm less under a deadline.