MEMBLOG

Changelog 0.7

- 2024-10-18

Hello! If you're reading this, (a) thanks, and (b) we'd love to interview you to hear what you think of our new onboarding experience covered below.

In 0.7 we simplified onboarding UX, refreshed program templates, added type information to nodes and state, gave our docs a manicure, upgraded the anthropic driver (again), and shipped a handful of IDE features & bug fixes.


Replace welcome webview with hello-world program. There's a lot to Membrane, which is good, but also bad (at first). We're simplifying the experience when you first sign up for Membrane and load the IDE. New users will see a hello-world/index.ts program open in their editor.

We want people to play with the code right away, before we try to explain things. This Hello World replaces the old welcome screen that had lots of text, a product tour, example programs, a full tutorial, links, etc.—which does sound overwhelming in retrospect...

hello-world program

Improve NEW PROGRAM templates. We simplified our program templates and added a new one. "Blank program" replaces "Action". "Daily cron" replaces "Poll URL". "Simple API" replaces the more robust (read: too much) "REST API". "Website" is new. "Webhook handler" and "Send/receive email" are basically the same.

Let us know what you think!

new program templates

Content updates, brand refresh on docs. Our documentation now reflects the changes to onboarding and new templates covered above, among other updates.

docs.membrane.io looks more Membrane-y than it did last week, mostly because we switched to Berkeley Mono. It's also more grayscale and geometric (goodbye, border radii).

docs.membrane.io new look

Supply type info for nodes.process and nodes.clock. We added TypeScript types for process and clock. The nodes object imported from the "membrane" module is most often used for connections, but it also has some other handy properties and methods. E.g. access a program's HTTP endpoint URL:

await nodes.process.endpointUrl;

Infer types for state object. When you don't explicitly type state by exporting a State type or interface, our TypeScript plugin will now infer the type of properties based on assignment.

state.lastPolled = new Date();
const formatted = formatDate(state.lastPolled); // TS knows `lastPolled` is a Date

We also fixed a regression where the TS plugin was not picking up State types in the first place (whoops).

Update anthropic driver (again). If you installed the membrane/anthropic driver before October 10th, it's time to upgrade to v4. The latest version adds all available params to the complete action—notably cache control. It also removes the deprecated models endpoint. Thanks Thomas Seeley for the upgrade (again)!

Surface file tree for stopped programs. Previously, the Navigator did not include files for stopped programs. Now you can view and open files even when programs are not running.

stopped program file tree

Separate Logs by date for readability. You'll now see a sticky date header for today's logs and a date separator/heading for previous days.

logs date header

Highlight keywords in package search results. Keep an eye out for more package improvements soon, and as always let us know if you have ideas or feedback.

package search keyword highlighting

Fix markdown preview links. Previously, anchor links in markdown previews within the IDE did not work. That's fixed.

Fix memconfig schema validation & info. When editing a program's memconfig.json manually, schema validation and info is now present.


- Pete Millspaugh (pete@membrane.io)

© 2024 Programmability, Inc.