Changelog 0.17
2025-01-31This week I crowdsourced changelog 0.17
from the team. We have several big features in progress: a visual dashboard, LLM assistant, and sys-db (i.e. BYODatabase).
The dashboard
From Juan:
I have been working on a new feature that we're tentatively calling "The dashboard". It's a place to interact with graph nodes using customizable UIs. The dashboard will unlock many possibilities that we're excited to showcase in upcoming blog posts. Follow @juancampa on X to stay updated.
- Juan
Schema goodies, LLM assistant
And Thomas:
I worked on improving the schema editor and VSCode integration, enhancing type inference and quick fixes. The schema editor now handles new members and parameters with inferred types, defaults unknown and array types to Json, and correctly processes numeric types. In VSCode, quick fix suggestions now display inferred types (like "Declare param: Int"), handle array types consistently, and group suggestions by Member kind.
I also started on an AI assistant panel for the IDE. I plan to have v1 shipped by the end of next week. This will provide contextual help and code suggestions directly within Membrane!
- Thomas
I'll add that Thomas also spent some time at our team onsite in Miami working on browser automation with Membrane, which he wrote about here.
sys-db
Romet's update:
We love state
, but sometimes your external project doesn't have an HTTP API or it's just easier to wrap the database directly. With sys-db
, we now have basic support for querying MySQL, PostgreSQL and MSSQL databases from Membrane.
We're still working on letting you add connections to system programs in the UI, but you can already try sys-db
by adding it to dependencies
in your program's memconfig.json
manually:
"dependencies": {
"sys_db": "sys-db:"
}
Then you can configure a database by connection string:
const database = nodes.sys_db.db({
db: `postgres://user:password@hostname:port/database`
});
And query it:
const rows = await database.query({ sql: "SELECT 42 UNION SELECT 56" });
for (const [number] of rows) {
console.log(number);
}
// 42
// 56
You can also bind params:
const rows = await database.query({
sql: "SELECT 'Hello,', $1 UNION SELECT 'and hello,', $2",
params: ["Membrane", "Postgres"]
});
for (const [greeting, subject] of rows) {
console.log(greeting, subject);
}
// Hello, Membrane
// and hello, Postgres
We'll be following this up with more examples and documentation soon.
- Romet
Onboarding tour, Hono router
And lastly, I've been focused on DX. Yesterday we shipped a new tour of the IDE that orients new users. First signs are positive from a user interview I did yesterday, but we still have a ways to go in explaining what Membrane can do.
You can go through tour at ide.membrane.io?tour=true. As always, we'd appreciate hearing any feedback (on the tour or anything else).
You may have also noticed the IDE is now hosted at ide.membrane.io with a fresh coat of paint (read: new loading screen).
I also added support and wrote about using Hono as a router for your Membrane APIs. And if you're interested in startup meta stuff, I wrote about our goal to have 10 unhappy users.
- Pete Millspaugh (pete@membrane.io)