Changelog 0.7
- 2024-10-18Hello! 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...
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!
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).
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.
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.
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.
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)