Changelog

NodeGX changelog

Every NodeGX release, newest first, back to the day Noodl became open source.

NodeGX is a fork of Noodl. The first NodeGX release was 0.1.3, in August 2026. Before that, this code was released as Noodl, Code Crusher and OpenNoodl. Those are at the bottom of this page.

Each NodeGX release links to its page on GitHub, where you can download it.

npm packages 0.2.12

An app that saves data can go online on your own free Cloudflare account, with one command.

This release is create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.12, @nodegx/mcp 0.2.10, @nodegx/export 0.2.6 and @nodegx/preview 0.2.9. @nodegx/backend 0.1.0 is published for the first time. npm create nodegx now sets up @nodegx/mcp 0.2.10 with @nodegx/studio 0.1.0 beside it. The other packages stay at their versions.

New

  • Your app online on your own Cloudflare account. npx @nodegx/backend deploy cloudflare <the app's folder> puts the app's pages, data, accounts, rules and functions on Cloudflare. The address stays the same when you update the app. An update keeps every record and account. A free Cloudflare account is enough.
  • One sign-in. npx @nodegx/backend sign-in cloudflare opens a Cloudflare page in your browser. You click Allow once on each computer.
  • Your agent knows the steps. Every folder npm create nodegx sets up has a guide to putting an app online. It ends with you checking the app on your phone.
  • Studio opens from an npm install. Before, an agent set up with npm create nodegx said "NodeGX Studio is not installed" unless you had the desktop app. Now Studio is installed beside the server. open_studio shows your app in Studio.
  • Your app as plain files. npx @nodegx/export export --target html <the app's folder> <a new folder> writes the app as HTML, CSS and JavaScript. There's nothing to install or build. Any web server for plain files runs it, for example npx serve <the folder>. The note your agent reads names it beside the React export.
  • One part of your app inside a page of your own. Add --component <its name> to write one component into a folder you already have. A game's menus can be built in NodeGX this way and shown over a world written in code. Running the command again updates the component and leaves your own files alone.
  • Workflows without code. A backend workflow can now make, change, delete or find records. It can also call an API, send an email and work out a value with a formula. You save an API call once and use it by name in any workflow. One workflow can run another by name.

Changed

  • A link your app sends by email waits for a press. Many work and school mail systems open each link in a new email to scan it. A link that does its work when it's opened is used up by that scan. Your agent now makes such a link open a page. A button on that page does the work.

Fixed

  • A second person signing in on one phone no longer sees the first person's rows. When the backend refused the new account a list, the page kept showing the rows it had before.
  • Every Record node offers the record's created and updated dates. They arrive as dates.
  • A press on a text field's padding puts the cursor in the field.
  • A copied project folder gets its own backend, never the original's.
  • provision_backend keeps the rules on a table you declared. It used to erase them.
  • On Mistral Vibe, the Large 4 model sees its screenshots.
  • In Claude Code, get_project_info arrives whole. It used to arrive as a short preview of a saved file.
  • The export package no longer carries folder names from the computer it was built on.

Good to know

  • The first start downloads more, because Studio comes with the server. It's about 175 MB and takes 6 to 9 seconds the first time. The server alone is about 43 MB.
  • A folder set up before this release keeps the server alone. npm create nodegx writes .mcp.json, opencode.json and .vibe/config.toml only when they're missing. To get Studio, delete the file and run npm create nodegx again. The Cline kit moves its own entry to the new server when you run it again.
  • An app that lets people upload files needs Cloudflare's file storage, R2. Switch it on in your Cloudflare dashboard before the first deploy.
  • On the free plan, Cloudflare refuses requests past about 100,000 a day. It doesn't charge for them.

create-nodegx 0.2.11

If you start by saying you're stuck, your agent points you to the help page in its first reply.

This release is create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.11. npm create nodegx still sets up @nodegx/mcp 0.2.9. The other packages stay at their versions.

Changed

  • Help from the first reply. The pointer to nodegx.io/help used to be only in the first-project guide. Your agent reads that guide when it starts a build. A person who was lost before any build never got it. Now the folder note your agent reads first has it as well.
  • A game's world is one plain page. When a game needs its moving world written in code, your agent puts it in one plain page in its own folder. It no longer starts a second server for it. A second server works only while it's running on your computer, so the game stops working once it's online.

create-nodegx 0.2.10

If you're new to building with an AI, your agent can now take you through a practice round first.

This release is create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.10. npm create nodegx still sets up @nodegx/mcp 0.2.9. The other packages stay at their versions.

New

  • A practice round, if you want one. Your agent offers it in one line when you're new. You build a small game together in about twenty minutes. It stops six times to show you how to get the best out of it. If you say no, it builds what you asked for.
  • A sheet about how you like to work. At the end of the round, you and your agent write it together. After you say yes, it's saved in your own skills folder. Your next project reads it from there.
  • A help page. When you're stuck, your agent points you to nodegx.io/help. It lists free guides by problem.
  • The guides reach Mistral Vibe. A Vibe folder now gets the first-project guide, the game guide and the practice round.

Changed

  • The first-project guide notices when a question didn't land. It asks once more in plain words, and says what changes depending on your answer.

Good to know

  • Claude Code reads your sheet from ~/.claude/skills/. Cline and Mistral Vibe read it from ~/.agents/skills/.
  • We're now trying the practice round with beginners.

create-nodegx 0.2.9

Before your agent builds a first app or game, it reads what our best builds learned.

This release is create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.9. npm create nodegx now sets up @nodegx/mcp 0.2.9. The other packages stay at their versions.

New

  • Every new project gets a first-project guide. It asks you everything it needs in one message. It puts something in your hands early, then improves the build in rounds from your notes.
  • Every new project gets a game guide too. It holds 91 traps from our own game builds, each with its fix. It also says how to test a game on a phone-sized screen when nobody is watching.
  • The folder note names both guides. It also says that a game's moving world is plain code. Its menus and settings can still be NodeGX.

Good to know

  • Claude Code reads the guides as skills. Other AI coders find them through the folder note.
  • We built one first project three ways: Claude Code on its own, on NodeGX, and on NodeGX with these guides. The three games are at nodegx.io/first-project.
  • In a Vibe folder, build_app no longer asks for permission. The server only offers it when you've set up a local model.

npm packages 0.2.9

For the NodeGX extension in Claude Desktop: Studio and the app's render now start.

This release is @nodegx/mcp 0.2.9. The other packages stay at their versions. npm create nodegx still sets up @nodegx/mcp 0.2.8.

Fixed

  • In Claude Desktop, Studio opens and the app renders. Desktop runs an extension on a Node of its own that can't start Studio, the render, the backend or a deploy. The NodeGX extension now brings its own Node. All four run on it.
  • The server gives Claude Desktop the extension's name. It answered noodl-mcp to an extension called nodegx.
  • A person in no group gets the app's own refusal. Get User Roles and List Users In Role filled Error when nobody was in the group. A function that answered with Error then said "That user is in no roles." instead of its author's words. Error is now empty there.

npm packages 0.2.8

What your agent sets up for an app's backend is kept in the project. Jobs the app runs by itself now work.

This release is @nodegx/mcp, create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.8. @nodegx/preview moves to 0.2.8 and @nodegx/node-spec to 0.2.2. @nodegx/project-contract, @nodegx/export and @nodegx/canvas-look stay at their versions.

New

  • Your agent knows where you see your app. You see it in three places: the part in the chat, NodeGX Studio and the NodeGX editor. get_project_info has a section on them. The three tools that open them name each other. If Studio is open, your agent is told when it adds a part Studio doesn't edit.
  • Option sets. get_example('option-set') shows a list of languages kept as an option set. A Dropdown on the page reads it. Your agent is pointed to it when it types the same list in as loose words.
  • Your agent hears what you changed in Studio. Turn a trigger off or move its time in Studio, and what_changed_since tells your agent the next time it asks.
  • Run a trigger once. fire_backend_trigger runs a trigger without waiting for its schedule. The schedule and the project stay as they were.
  • A key in your app's .env works straight away. Paste an API key into the project's .env file and the app's cloud functions use it on their next call. There's no agent step and no restart. The line in .env wins over a copy of the same key on the backend's Secrets page.
  • A phone on your Wi-Fi gets the app's data. A preview shared with --host now carries the app's backend with it. Before, a phone opened the page but asked itself for the data.
  • Your agent is warned when two Conditions read each other's change. Two Conditions can run on one signal while one changes what the other reads. The second then always sees the change, however they're wired. get_example('score-then-move-on') shows how to chain them so it decides first.

Changed

  • A job the app starts by itself counts as the app. A schedule, a change to a row and Studio's Run now can call a function set to "signed in only", with nobody signed in. A webhook and a direct call from outside still count as a visitor. Before, a scheduled job was refused, so two agents in three opened the function to everyone to make it run.
  • The tables your agent makes are kept in the project. provision_backend writes them into the project file. A new backend starts with them.
  • Anything you can click can be reached with the keyboard. A box, a text or a picture with its Click wired now takes Tab and presses with Enter or Space. A screen reader calls it a button. A clickable card that holds its own buttons or fields leaves Tab to those. Your agent is told when it builds one.
  • A wire into a placed component's Visible is refused. A placed component has no Visible or Mounted of its own, so the wire did nothing and the screen behind it still showed. The refusal says to wrap the component in a Group.
  • drive_page checks every step before the first one runs. A drive it refuses no longer leaves the page half driven.

Fixed

  • Someone removed from a group no longer keeps seeing it. When an app put two people in a group at the same moment, the backend could make the group's role twice. Removing someone then said it worked. They could still read the group's rows. A role is now made once. A backend that already holds two of one name puts them back together.
  • A User node now works inside a cloud function. Its Fetch asked the backend for an address it didn't serve. It now gets the person who made the call.
  • A table only its creator can read lists before its first row. It used to fail with "no such column owner".
  • A workflow reads a function's answer. Its call-function step now says a NodeGX function answers { result: … }, read as previous.result.<name>. An agent read previous.items and its monthly run failed.
  • A trigger finds its function by its short name. A name that matches two functions is refused. A run the backend refuses keeps the function's reason.
  • The backend's Roles page names a role your rules use that the backend lacks. A button next to it makes the role. Before, a backend started from the project's files said "No roles yet".
  • A backend export leaves out password hashes. GET /admin/export no longer includes the backend's own _ fields.
  • A Function's run-on-change setting gets its right name. An agent wrote runOnChange-title where the setting is runOnChange-in-title. The Function then ran on every keystroke. Your agent is now told the right name.
  • A placeholder page no longer becomes the start page. An agent that wrote empty pages first, to fill in later, moved the app's start to each one in turn.
  • A resumed Claude Code session finds its app. A server with no project open names the project already in its folder. It also tells your agent that seven tools is the normal start, not a lost connection.
  • A list row shows its own words from the start. For one frame a new row showed its Text elements' default words.
  • Deleting a list row straight after adding it no longer logs an error ("No ancestor component has a Component Object node").
  • A Video keeps its YouTube or Vimeo player when a Source Object arrives. A Video playing a file now fires Click, Hover and Pointer and takes a dropped file.
  • A Text set to Ellipsis draws the "…".
  • A Function's signal carries the last value its code set. A script that cleared a value and then set it sent the cleared one with its signal. A Send button's first press could show nothing.
  • Sign In With clears its Error when a sign-in works. A label wired to Error kept showing the last failure.
  • open_studio finds the installed Studio app. It said Studio wasn't installed when the app was in Applications. A computer without it is told where to download it.
  • For editors built from the kit. In @nodegx/node-spec 0.2.2, Visible reaches six controls at once. The Request node's spec says a run the app starts by itself counts as the app.

npm packages 0.2.7

Your agent now keeps your app's workflows and triggers in the project's own files.

This release is @nodegx/mcp, create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.7. @nodegx/preview moves to 0.2.7, @nodegx/node-spec to 0.2.1 and @nodegx/project-contract to 0.2.2. @nodegx/export and @nodegx/canvas-look stay at their versions.

New

  • Workflows and triggers are kept in the project. The access rules, workflows and triggers your agent sets up are now written into the project folder, in nodegx.security.json and nodegx.automations.json. The backend still holds them too. A backend starts from those files. A full-stack deploy takes them to the server. get_project_info says when the backend and the files differ.
  • Layout tips while building. A box with no size setting can stretch to fill its parent. A pill then wraps onto two lines, or a row of words becomes a tall band. Your agent is now told when a write does this, and how to fix it.

Changed

  • An app with nothing built yet can be deployed. deploy_to_vm used to refuse it. Now it ships. The result says first that a visitor will see only the placeholder page. A new project's placeholder reads "Lingo — this app is being built." It used to tell the agent to read the plan.

Fixed

  • Mistral Vibe 3. Every request from a folder npm create nodegx-vibe made was refused ("max_tokens is too large"), so nothing could be built. The folder now caps Mistral Large 4's answers at the most Mistral allows. It also tells you to start with vibe; vibe --legacy-harness is only for Vibe 2.
  • A record a cloud function creates for someone is theirs. Before, a record a function created had no owner, so every signed-in account could read and change it. Now a record a function creates during a signed-in person's call is that person's. It's treated as if their own page had made it. A function that means to share one says so with its acl, or the collection is set to shared.
  • A double-click is one press when the button calls a cloud function. It already was when the button saved a record. Now a press that starts a cloud function call is ignored again until the call answers.
  • No npm audit warnings on install. Installing the kit printed three moderate warnings. All three were one advisory in the XML parser, which moves to version 5.
  • Long feeds can be read. Parse XML and Parse Feed refused any document with more than a thousand escaped characters, such as &amp;. A blog feed of about 150 posts was enough to be refused.
  • Writes are quicker. A component write that took 2.5 seconds on a large project now takes 0.7.
  • what_changed_since sees your edits again. After any write by the agent, it said nothing had changed, even when you had edited the app in Studio since.
  • A wire saved before an output was renamed connects again. It used to connect to nothing. It now connects to the output's new name.
  • Outputs.done.send() works in a Function. Calling .send() on a signal output threw an error. It now sends the signal.
  • A Video's Volume can't blank the page. A Volume outside 0 to 1, such as 50 from a Slider, blanked the whole page. It's now held at 0 or 1.
  • Going to a page by its path works in the preview. There, going to a path such as /sign-in led to the start page. A reload of an app deployed in a sub-folder asked the server for an address outside the app. Both are fixed.
  • The style guide your agent reads matches the checker. It no longer suggests a Text width of "auto", which the checker rejects. A Button you drag in now has the same shadow as one your agent builds.
  • get_component hands back port types the write tools take. Before, the write tools could refuse a port type it had reported.
  • A render that cannot start Chrome says why. It now answers within 30 seconds and leaves nothing running.
  • Text nobody can read is reported. render_report warns low-contrast-text when text is under 3:1 against what is behind it, and drive_page can check it on any page: "expect": { "readable": true }.
  • Pages whose address takes a value. render_report no longer says "NOT DONE" for a page like tables/{childId}, which it cannot open. It names the page and says how drive_page reaches it.
  • No red console line in the preview. The preview no longer answers nodegx-config.json with a 404, so a previewed app can pass "no console errors". Its state endpoint now also lists the build's warnings.
  • For editors built from the kit. The in-page preview's elementsOf() returned nothing for a copy of a component. It now returns the elements the copy draws.

npm packages 0.2.6

Your agent can put your app, its backend and its data on a server you own.

This release is @nodegx/mcp, create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.6. @nodegx/preview moves to 0.2.5. @nodegx/export, @nodegx/node-spec, @nodegx/project-contract and @nodegx/canvas-look stay at their versions.

New

  • Your app on your own server. Ask your agent to put the app on a Linux server you rent. Its new deploy_to_vm tool sends the app over ssh with its backend, cloud functions, access rules and function secrets. It installs them as a service. With a web address, the app is served over https. Publishing again keeps the server's data. docs/runtime/YOUR-OWN-SERVER.md in the NodeGX repository says how to set the server up.
  • The whole app in one folder. npx -y --package @nodegx/preview nodegx-deploy <app> <folder> --full-stack writes the app with its backend, its cloud functions and its access rules. ./start.sh in that folder runs it.
  • What each file is licensed under. Every deployed folder now holds NODEGX-LICENSE.txt. The app's own files belong to whoever built it, and the runtime and the backend it runs on are MIT. The open-source notices inside the runtime now ship beside it.

Fixed

  • A deploy no longer publishes the backend's access policy or its backend/ folder beside the site.
  • A backend the agent sets up has its access rules switched on from its first record.
  • Who owns a record is decided by the server. A caller can't write it.
  • A project with nothing built yet is refused before anything reaches the server.
  • The packages no longer contain folder paths from the computer they were built on.

Good to know

  • NodeGX Studio can appear inside a Claude Desktop conversation (open_studio), but only on a computer with Studio installed and NODEGX_STUDIO set to its folder. Studio isn't on npm yet.
  • While Studio is open beside the agent, a plan of more than three components is refused. The person sees the app take shape a few components at a time.

npm packages 0.2.5

Your agent can read a whole NodeGX app as one page of text, and the code export is on npm.

This release is @nodegx/mcp, create-nodegx, create-nodegx-vibe and create-nodegx-cline at 0.2.5, and @nodegx/export at 0.2.5, published for the first time. @nodegx/preview stays at 0.2.4, and @nodegx/node-spec, @nodegx/project-contract and @nodegx/canvas-look at their versions. Nothing in them changed.

New

  • The whole app on one page. npx -y @nodegx/mcp@0.2.5 <the app's folder> --graph prints the app as text: a map of its components, then for each component its ports, its screen tree, its nodes, every parameter, each function as code, and every wire as from.port -> to.port. It writes nothing. With the server open, the tool read_graph is the same page. Before this, an agent asked to read an app wrote its own scripts over the JSON under components/ to list the nodes and wires. On a game of 54 components, reading through the page cost about a tenth less and the agent understood the app as fully as before.
  • New projects tell the agent how to read an app. The note npm create nodegx writes for your agent now names --graph, and says that opening a project with the server writes nothing into its folder.
  • Leaving for code, from npm. npx @nodegx/export export <the app's folder> --dry-run says first what will and will not translate. Without --dry-run, and with an empty folder named after the app, it writes a React + Vite app there. It is in alpha: it lists what it cannot carry yet before it writes anything.

Changed

  • open_project says it writes nothing. An agent asked not to change any file refused to open the project with the server, because the project's .gitignore said .mcp.json is written when the project is opened. The NodeGX editor writes that file, not the server. The tool's description, the agent's note and that comment now say so.

0.4.3

Latest Download & notes

The backend NodeGX runs on your computer now makes the smaller photos an app shows on its cards and lists.

Fixed

  • The backend on your computer can make smaller copies of photos. An app asks for one to show a photo on a card or in a list. In 0.4.2 the backend that NodeGX runs couldn't make them, so the app showed a broken image there. The photo itself was always uploaded.
  • Saving an app sends its cloud functions only to its own backend. In 0.4.2 a save sent them to every backend running on your computer. With two apps' backends running, one app's functions reached the other app's backend.
  • A Function can call a signal with nothing wired to it. Outside the editor, in a preview or a deployed app, a Function whose code called Outputs.done() stopped with an error when nothing was wired to Done. It now runs to the end and sends nothing.

New

  • Your agent can set the look of one kind of control across the app. The new set_element_style tool styles every button at once, for example. render_report now draws an app's styles as well.
  • Your agent hears which argument a tool doesn't have. call_tool now refuses an argument the tool doesn't take and names it, as calling the tool directly does.
  • Exported apps do more of what the running app does. A signal sent into a component, a Function's Success, a Set Variable's Done and a text field's Set and Clear now work the same in exported code.

npm packages 0.2.3

npx @nodegx/preview works again, and the packages for building your own editor can now draw an app's screen without running it.

This release is @nodegx/mcp, @nodegx/preview, create-nodegx and create-nodegx-vibe at 0.2.3, and @nodegx/node-spec and @nodegx/project-contract at 0.2.0. @nodegx/canvas-look stays at 0.1.0. Nothing in it changed.

New

  • Draw a screen from its files. @nodegx/node-spec/draw is new in node-spec 0.2.0. Give it a component's files and the values on its wires, and it returns a box for each thing on the screen. Each box also lists what the drawer had to assume. A page can load it without a bundler. It's about 12 KB.
  • The editor guide teaches both ways to show a screen. npm create nodegx adds a guide for building your own editor. It now explains when to show the real app beside your editor and when to draw the screen instead, and what each one costs. It also answers the 43 questions three test builders asked while following it.
  • The honesty number. get_project_info, get_component, every change the agent makes, and render_report now say how much of the app is made of nodes whose behaviour is known. The rest is code nobody has checked, such as Function, Script and Expression nodes. It isn't a quality score. It tells you which parts can only be understood by reading their code.
  • More nodes are described. node-spec 0.2.0 describes 17 more node types, 125 in all, including the backend's users, roles and calls.
  • Uploads, webhooks and live updates match the 0.4.2 editor. The preview and the agent's backend now have Upload File's Readers and Shrink To, Paystack signature checks on webhooks, and live updates for signed-in members.

Fixed

  • npx @nodegx/preview <app folder> runs the preview again. Since 0.2.0 it stopped with an error, because the package had two commands and npx couldn't choose. It now has a preview command, and the old names still work.
  • The editor test suite loads an adapter written as an ES module on Node versions before 20.19. Before, it failed to load it.
  • The editor test suite grades a format-4 project the way the NodeGX server writes it. An editor that ticks run when a value changes, as the server does, now passes. The guide says to tick it.
  • A PASS on files alone says so. When your adapter can't run the graph, the suite's PASS line now ends with files only.
  • Code the agent exports matches the running app more often: filtered and sorted lists, sign-in pages, and forms that say whether they were sent.

Good to know

  • A folder set up with 0.2.2 keeps using 0.2.2. To move it to 0.2.3, change the version in its .mcp.json files.
  • @nodegx/project-contract 0.2.0 needs @nodegx/node-spec 0.2.0. Upgrade the two together.
  • 0.2.2 (2026-10-15) had no notes here. It added npm create nodegx-vibe, which sets a folder up for Mistral Vibe. render_report also began to name text pressed against the edge of its box, and drive_page began to check what a watched step expects.

0.4.2

Download & notes

Apps can now keep photos for their members only and check Paystack's payment webhooks.

New

  • Upload File can keep a photo for members only. Its new Readers input names the roles, such as role:member, that can open a private file. The person who uploaded it can still open it.
  • Upload File can make a photo smaller before sending it. Its new Shrink To input sets the longest side in pixels. Photo Quality sets how much detail a JPEG or WebP keeps.
  • A webhook trigger can check Paystack's signature. Choose Paystack signature for the hook in the backend's admin app, then paste the Paystack secret key.
  • A project's collections come with it. Some projects list their collections in backend/schema.json. When you start that project's backend on this computer, NodeGX now adds any of those collections it lacks. Each one keeps its unique fields and links.
  • Exported apps do more of what the running app does. Filtered and sorted lists, sign-in pages and forms that say whether they were sent now work the same in exported code.
  • Your agent sees more of what it built. render_report now shows the app on a desktop, a tablet and a phone. It also names a row with a hole in it, or text pressed against the edge of its box.

Fixed

  • Live updates reach signed-in members. On the built-in backend, Subscribe To Changes asked for updates as a stranger, even when someone was signed in. A collection that only members can read refused every update. It now asks as the person who's signed in.
  • A refused webhook call says why. In the admin app's Runs, a call refused before its first step said "This run recorded no steps". It now shows the reason, such as a signature that doesn't match.

Good to know

  • Exported code doesn't keep Readers or Shrink To yet. If your app shares photos with members only, don't export it as code for now. An exported Upload File sends the photo as a full-size public file.

0.4.1

Download & notes

A small release that fixes three things in 0.4.0: opening a project no longer changes its files, the update window shows when a project is open, and the What's new window is readable.

Fixed

  • Opening a project no longer changes its files. In 0.4.0, a page could be saved again a second after the project opened, although nobody had changed anything. In Git it showed up as changed files.
  • The update window shows when a project is open. In 0.4.0 it opened behind the editor, so New version available seemed to do nothing. From the projects list it always worked.
  • The What's new window is readable. Its bold sentences and its links were white on white.

Good to know

  • To update from 0.4.0, go back to your projects first. 0.4.0 still has the hidden update window, so it shows the update to 0.4.1 on the projects list, not inside a project.

npm packages 0.2.1

New apps start with a typeface, icons and pictures. Your agent's checks now agree with the preview, and the preview starts your app's backend for you.

New

  • New apps start with a typeface, icons and pictures. create_project now adds Inter, the Lucide icons and the starter pictures, the same set the editor gives a new project. Before, an app made from npm had none of them.
  • The preview starts your app's backend. npx @nodegx/preview <app folder> starts the app's backend on your machine if it isn't running, and stops it when the preview stops. Add --no-backend to leave it alone.
  • An example of an app that speaks. fn-play-audio-a-cloud-function-returns calls a text-to-speech service from a cloud function, so the key stays on the server, and plays the audio in the page as it came. Your agent finds it when it searches the examples for text to speech.
  • render_report looks at three sizes: desktop, a portrait tablet (768 × 1024) and a phone. On desktop it also names a row with a big gap in it, and a part of a section that sits off the line of its heading.
  • drive_page can watch several things at once, for example every answer on a quiz screen.

Fixed

  • validate_project passed some pages that the preview then refused to show. It now also runs the preview's own check, and says what the preview would refuse.
  • A new project's first check warned that its typeface wasn't there. It is now.
  • The agent was offered library tools (list_library, install_prefab) that only work inside the NodeGX source code, and every call failed. They're no longer offered.
  • Two examples called a cloud function by a name that no function had. Now each call names its function.
  • On a page that scrolls smoothly, a tap read the page before the scrolling stopped. It now waits.

Good to know

  • The backend needs Node 22.13 or later.
  • A folder set up with 0.2.0 keeps using 0.2.0. To move it to 0.2.1, change the version in its .mcp.json files.

0.4.0

Download & notes

NodeGX now opens the apps you make with npm create nodegx. This release also brings script files, a window that explains each node, new kinds of backend rule and many fixes to how nodes behave.

New

  • Apps made with npm create nodegx open in the editor. 0.3.0 refused them, because the npm tools save projects in a newer format. Opening one keeps its project id.
  • Functions can share code through script files. Put .js files in your project's scripts folder. Scripts have their own section in the Components panel. A script opens in its own tab. A Function picks the scripts it needs in its Uses list. Code export includes the scripts.
  • A node can explain itself. In the properties panel, How this node works under the node's name opens a window. Its left side says what the node does with each input. Its right side lets you set the inputs, press the signals and see what comes out.
  • A Counter or a Slider whose minimum is above its maximum now says so. A warning shows on the node while the app runs in the editor.
  • The Problems panel flags a wire to a port the node doesn't have. It also flags a component with two Page nodes, and a cloud function with two Request nodes.
  • Nodes in a cloud function show their settings. A new Aggregate Records shows its Class, Filter, Property and Operation. On a REST backend, the class picker and the Record and User nodes show the backend's own field types.
  • Keep When Leaving on Page keeps a page as it was when someone navigates away and comes back. Component Stack has the same option, Keep Pages When Unmounted.
  • Data Attributes on every visual node, for example data-testid. Every visual node also has a Scroll Into View signal.
  • Your own CSS can place a Group. A node now writes inline styles only for the values you set. The properties panel says when a stylesheet decides a value.
  • Array Filter has Is one of and Is not one of, and can filter on a nested field such as owner.id.
  • Model Request can use a model on your own computer, such as one run with Ollama, through the OpenAI-compatible option. In 0.3.0 that option didn't work.
  • Code export: Parse CSV, To CSV, Parse XML and Parse Feed now export.
  • The backend can keep more kinds of rule. A field can be readable by some people only. A record can be locked once it stops being a draft. A field can be set once and never edited. A record can be protected from deletion. Records can be numbered like invoices, so a number is never used twice. Your agent writes these rules from what you tell it. The backend manager doesn't have a screen for them yet.
  • When your agent renames a field or a collection, the backend moves the records and the permission rules with it. It makes a backup first.
  • An existing field can be made required.
  • The Permissions page has an Enforce my rules on this machine switch, to test your real rules locally.
  • Agents other than Claude Code can build with NodeGX. Mistral Vibe, for example, can now reach every NodeGX tool. A new project gets an AGENTS.md beside its CLAUDE.md, because most other agents read that file instead.

Changed

  • A sign-in ends after 30 days without use. The person signs in again.
  • Parse XML and Parse Feed's limit is now called Max Characters, which is what it counts. Existing wires keep working.

Fixed

  • A cloud function could make someone the backend's admin. It can't now. Update if your backend runs cloud functions.
  • Restoring a backup now brings back every setting: sign-in, search, files, saved views and workflows.
  • nodegx-backend migrate refuses a PostgreSQL database that already holds records, before it moves anything.
  • HTTP Request's Authentication now sends the credential you give it.
  • A Function or node that throws an error, or a value of the wrong kind, no longer blanks the whole page.
  • One timer's error no longer stops every other timer in the app.
  • Repeater rows are no longer lost.
  • Form controls show what the person did and report it.
  • Component Stack, Router and Navigate handle addresses and the browser's back button properly.
  • JSON Stream Parser no longer freezes the app on a stray }.
  • Signing out clears the User.
  • Editor icon buttons have names a screen reader can read.
  • When your agent renders your app to check it, the render now has the default spacing, corners and fonts. In 0.3.0 it had none, so the app looked broken.
  • Your agent can deploy your cloud functions from the installed app. In 0.3.0 this failed unless the project folder was an npm package.
  • A deploy no longer publishes your agent's files, such as .mcp.json and CLAUDE.md. .mcp.json names folders on your computer.
  • A Counter with a Start Value no longer sends 0 first.
  • A Variable read when a page mounts already holds its value. Before, it could write 0 over a saved value.
  • A Script node's wired outputs and signals now work outside the editor, for example in the npm preview.
  • A Video's Restart and Reset go back to its Start Time.
  • Aggregate Records in a cloud function now filters on a wired filter value, and reads the built-in backend's columns.
  • Model Request fails once when a provider sends back something that isn't an answer. Before, it sent the request three times.
  • A cloud function no longer hangs when the signed-in user's details come back unreadable.
  • The User, Set User Properties and Sign Up nodes no longer show the accounts table's access rules as a property.
  • A Problems panel row no longer asks "did you mean" about the name it's just given.
  • Many smaller fixes to how nodes behave.

Good to know

  • A project opened in 0.4.0 can't be opened in 0.3.0 any more. The first time you open a 0.3.0 project, NodeGX copies the project folder to <project>.before-0.4. Then it updates the project to the new format. Your app works as before. Keep the copy until you're happy with the updated project. It's the only copy 0.3.0 can still open.
  • 0.3.0 refuses a project saved by 0.4.0 with two wrong messages. One names Noodl, and the other says project.json is missing. The person needs to update to 0.4.0.
  • The first time you open a page your agent wrote, NodeGX rewrites that page's files. In a project kept in git, this leaves them changed.
  • Aggregate Records behaves differently once you redeploy a cloud function that uses it. A wired filter now filters. When nothing matches, its outputs are empty.
  • Code export is still in alpha.
  • Windows installers aren't signed, so SmartScreen will warn you. Choose More info, then Run anyway.
  • If you use the MCP server with an assistant, restart the assistant's session after updating.

npm packages 0.2.0

Your agent can now look at the pages it builds and press through them like a person. It can also keep an API key on a server and put your app in a folder you can host.

New

  • Your agent sees what it built. render_report now works from npm. The agent renders each page and reads what it measured before it says the work is done. It needs Chrome, Edge or Chromium on your machine.
  • Your agent tries the app the way you would. drive_page taps, types and waits like a person. Then it reads what a person would see, such as a colour named in words or whether something is visible. It can watch the moment a new screen appears, and reload the page it's on.
  • Your agent can start a backend. provision_backend runs a NodeGX backend on your machine. Nothing else needs installing.
  • A cloud function can keep a key secret. set_function_secret stores the key on the backend. A cloud function reads it with a Secret node. The page never sees it. You paste the key into the project's .env file yourself. It never goes through the chat.
  • nodegx-deploy writes your app to a folder you can host: npx --package @nodegx/preview nodegx-deploy <app folder> <output folder>.
  • Your agent can build you an editor of your own. npm create nodegx now adds a skill, nodegx-your-own-editor. It tells your agent how to build its own editor for these apps from the published packages, and how to check it's right.
  • Mistral Vibe and OpenCode. npm create nodegx also sets the folder up for Mistral Vibe (with Mistral Large 4) and for OpenCode. Start Vibe with vibe --legacy-harness.
  • npm create nodegx now sets a folder up with @nodegx/mcp 0.2.0, and writes a short CLAUDE.md and AGENTS.md saying that apps in the folder are NodeGX apps.

Fixed

  • The preview served every file in the project folder, including .env and .mcp.json. It now serves only the app.
  • A render could hang on Mac behind a "Keychain Not Found" dialog. It no longer opens the keychain.
  • Reloading the preview on any page but the first showed "Not found". It now shows that page.
  • A child could be listed twice under its parent. The preview then refused the page while validate_project passed. Now it's listed once.
  • A style preset named a typeface that never loaded. The preset fonts now come with @nodegx/mcp.
  • A cloud function call wired without its in- and out- port names sent nothing. The server now refuses that wiring and says how to fix it.
  • When the agent changed a cloud function, nothing told it to deploy it. It's now told, and offered the deploy tool.
  • An agent whose tool list never refreshes couldn't build after creating the project. It now reaches every tool through call_tool.
  • Deploying cloud functions failed unless the agent was started inside an npm package.
  • A deploy copied .mcp.json and CLAUDE.md into the output folder. They're now left out.
  • A page with warnings was reported as clean. The report's first line now names the warnings.

Good to know

  • The backend needs Node 22.13 or later.
  • The backend on your machine stops when your agent's session ends. To use the app's data again, ask your agent to start the backend.
  • A folder set up with 0.1.0 keeps using 0.1.0. To move it to 0.2.0, change the version in its .mcp.json files.

npm packages 0.1.0

One command from npm now sets a folder up for your AI agent to build NodeGX apps in. The same release publishes the packages for building your own NodeGX editor.

New

  • npm create nodegx my-apps writes one file, my-apps/.mcp.json. Run Claude Code in that folder and your agent can scope and build a NodeGX app with you. It does not need the editor or this repository.
  • @nodegx/mcp is the NodeGX server your agent talks to. Any agent that speaks MCP can start it with npx -y @nodegx/mcp --allow-writes.
  • @nodegx/preview shows the app in your browser and reloads it when its files change: npx @nodegx/preview <app folder> --open.
  • @nodegx/node-spec describes what each node does, runs it, and grades any runtime against it.
  • @nodegx/project-contract is the project file format: its types, schemas and validator, the design tokens, and a test suite that grades any editor against the format.
  • @nodegx/canvas-look holds the colours and sizes of the editor's canvas, for an editor that wants to look like NodeGX.

Good to know

  • @nodegx/mcp, @nodegx/preview, @nodegx/project-contract and create-nodegx are GPL-3.0, because the first three contain the editor's code. @nodegx/node-spec and @nodegx/canvas-look are MIT. The runtime your apps run on is MIT.
  • These are 0.x versions: a minor version may change how they are used.
  • Known issues in each package are tracked in the bug ledger in the NodeGX repository (dev-docs/bugs/). None of them blocks a release.
  • Coming soon: a guide your AI coding assistant can follow to build you your own NodeGX editor.

0.3.0

Download & notes

Projects made in 0.2 are upgraded when you open them, there is a new Styles panel, and your backend has its own page in the browser.

New

  • Your project is upgraded when you first open it. 0.3.0 stores text styles as typography tokens. The first time you open a project made in 0.2, NodeGX copies the whole project folder to <project>.before-0.3, converts its text styles, and shows a message saying it did. If the copy cannot be made, the project opens unchanged and NodeGX tries again next time.
  • Library parts are converted too. A part you install that uses text styles is converted in the same way, so it arrives styled.
  • Styles panel. Your project's colours, tokens and Looks are in one panel in the left rail, under Components.
  • Looks. A Look is a saved style for one kind of node. Style a button, save it as a Look, and use it on your other buttons.
  • Visual editors for shadows, gradients, animation timing and fonts. Use sliders and lists instead of typing CSS. "Show CSS" shows the code if you want it.
  • Tokens show where they are used. A token in a field shows as a chip with its name. Each token has a "Used by" list of the nodes that use it.
  • Every property row says where its value comes from: you, a Look, or the default. Reset says what it will reset to.
  • Properties have their own column on the right.
  • Layers tab. Components and Layers are two tabs. Layers shows what the previewed page is made of, and you can drag items to rearrange them.
  • The canvas and the preview highlight each other. Hover or select a node and the same element is outlined in the preview, and the other way round.
  • A note in the preview when the component you are editing is not on the page it is showing.
  • Boards. Lay several components out side by side. The board keeps its layout.
  • Repeat node. Does something every few seconds.
  • Parse Feed and Parse XML nodes. Read an RSS or Atom feed, or any XML, into a list.
  • Model Request node (cloud functions). Sends a prompt to Claude and returns the answer. The OpenAI-compatible option is listed but does not work yet.
  • Drag and drop on Group, Text, Image, Circle and Video.
  • Text Input can ask for a number keypad on phones and set the label of the Enter key.
  • Game Kit module in the library: sound, an avatar, a race track, an on-screen keyboard and an answer pad.
  • The backend can run on PostgreSQL. nodegx-backend migrate moves an existing backend over.
  • Collections can have indexes, unique fields, and rules every row must pass.
  • "Only If Unchanged" writes, so two people saving at once do not overwrite each other.
  • Schedules can skip a run while the previous run is still going.
  • Your backend has an MCP address (/mcp) that Claude or another app can connect to with an API key. An API key can belong to one user.
  • The backend manager. Your backend is run from its own page in the browser, opened from the Backend card in the editor. You pick and tick things there instead of typing JSON, lists or schedule codes. It works in light and dark, and every page has its own link.
  • Collections: filter rows, sort by a column, choose columns, save views, edit each field with a control for its type, see who can see a record, and import a CSV file.
  • Schema: choose one of eleven kinds for a field, and set rules the backend enforces, such as a list of choices, a maximum length or whole numbers only. If you add a required field to a collection that already has records, you give one value to fill them with.
  • Users and roles: people are shown by name. You can turn off someone's sign-in, and add people to a role by searching or pasting email addresses.
  • Permissions: a grid of who can do what in each collection, with ready-made templates, and Try it as to check a rule as a particular person.
  • Triggers: build a schedule by picking options and see its next five runs. A webhook shows its address, and shows its secret once.
  • Workflows and runs: run a workflow from a form, watch runs live, and cancel one that is running.
  • Email and sign-in: choose an email provider from a list, edit each email with a preview, and set up a sign-in provider step by step.
  • Files and backups: browse uploaded files and see which records use them, and restore a backup. Uploads and backups can be kept in an S3-compatible bucket instead of on the server's disk, with a Test connection button.
  • The first admin is a person. The first time you open the backend manager, it asks you to choose an admin email and password. That account signs in to the manager, and to your own app with the admin role. From the Users page you can give other people full or look-only access.
  • Code export: Looks and text styles now export. Before, they were left out.
  • Code export: popups export as dialogs.

Changed

  • Text styles are now typography tokens. A Text node picks tokens and no longer creates text styles.
  • The Preset / Size picker is gone. Nodes that used a preset keep their look. Save it as a Look to reuse it.
  • Sheets are gone. Folders whose names began with # show as ordinary folders.
  • Show Popup opens a real dialog. Escape closes it, keyboard focus stays inside it, and the page behind cannot be clicked.
  • Buttons and form controls show a focus ring when you reach them with the keyboard.
  • Emailed sign-in links open a page with a button. Pressing the button signs you in. Before, the link signed you in straight away, so a mail scanner could use it up.
  • The backend panels have left the editor. Data, schema, sign-in, email, permissions, search, secrets and triggers are all in the backend manager. Add a field and the canvas's Add / Edit this trigger… open the right page there, already signed in.
  • The backend returns true and false, not 1 and 0.
  • A query with no limit returns at most 1,000 rows, and the reply says it was cut short.
  • A redesigned editor: one type scale, consistent corners and shadows, a new properties panel, and a Templates tab with pictures. The editor loads one font file instead of six.
  • Twelve nodes are marked as not exportable on the picker card and in the properties panel. Parse Feed and Parse XML say "Not exportable yet".

Fixed

  • A limited API key could read sessions, users, other keys and the audit log. It can't now. If you gave anyone a limited key, update.
  • A backend request retried after 0.2.4 had already answered it could run twice. This is fixed the first time the new backend starts.
  • The launcher could open the wrong project when two projects had the same id.
  • All 78 "Read docs" links on library cards were broken.
  • Font size and spacing fields now offer your tokens.
  • The colour picker now lists all your colour tokens.
  • Saving an empty object to the backend failed.
  • Some records came back from the backend changed.
  • States colour transitions now work with tokens.
  • Presets now load their fonts.
  • Pictures in exported apps load on pages two levels deep.
  • The editor no longer sends a broken request to GitHub when you have never signed in.
  • The editor logs far fewer background errors.

Good to know

  • Keep the .before-0.3 copy until you are happy with the upgraded project. It is the only copy that 0.2 can still open.
  • Code export is still in alpha. A few projects still stop the export with an error. If yours does, please report it and attach the project.
  • The nodegx command-line export tool is not on npm yet. npm i -g @nodegx/export does not work. Export from the editor instead.
  • Windows installers are not signed, so SmartScreen will warn you. Choose More info, then Run anyway.
  • If you use the MCP server with an assistant, restart the assistant's session after updating.

0.2.4

Download & notes

The things we built for 0.2.3 now reach your computer.

Fixed

  • Documentation links in the editor work again. The docs site moved on 7 August, and one of the editor's two addresses for it was never updated. So 0.2.3 shipped with all 176 node pages, the property panel's "read more", the node picker's help and the MCP settings help pointing at a page that no longer existed. A check now opens real docs pages on every change.
  • The MCP server is complete. Two of its four files were missing from the installed app. Without them, an assistant could not read the node types of any module in your project, and could not bundle cloud functions.
  • The MCP server reports its real version. It said 0.1.0 in every release until now.
  • Background images load on a site deployed to a sub-path (--base-url /something/). Before, the picture looked for itself at the root of the domain.

New

  • Two templates. Pixel Dungeon, a grid game with keyboard movement, rooms and a score bar. Story Engine, a branching story written as one JSON list you can edit.

Good to know

  • The parts library (46 prefabs, 32 modules) is downloaded while the editor runs, so it works in 0.2.3 as well. You don't need this update to use it.
  • If you use the MCP server with an assistant, restart the assistant's session after updating. A running session keeps the old copy.

0.2.3

Download & notes

Fixes for the issues you reported, and a command-line tool for exporting and deploying. The app is also 25 MB smaller and uses far less CPU when idle.

Fixed

The numbers are GitHub issue numbers.

  • #26: a wire into a size port now works. A one-word mistake had switched the conversion off since the first commit of the code. A port that receives something that isn't a size now says so.
  • #31: the preview server only listens on your own computer, and no longer gives out its access token. If you used 0.2.2 on a shared network, update.
  • #29: Linux installs on current distributions. FUSE 3 works, Chromium's sandbox is back on, and there is an .rpm for Fedora, RHEL and openSUSE.
  • #21, #22: Columns measures its own width. It has Breakpoint, At Medium and At Small outputs, and there is an Advanced Columns part with four widths.
  • #40: page checks are 5.2× faster (11 pages went from 53.8 s to 10.3 s). They can save screenshots, and they no longer drop console errors logged while a page loads.
  • #42: smaller and quieter. The download went from 185 MB to 160 MB. Idle CPU went from 2.42% to 0.14% of one core. It had been shipping 85 MB of unused files and running a hidden spinner forever.
  • Also fixed: #5, #14, #32, #33, #35, #37, #41.

New

  • The nodegx command. nodegx export, deploy, serve, render and live: export to React, build a site you can upload, and check it, all without opening the editor. It is built but not yet on npm, so npm i -g @nodegx/export does not work yet.
  • More for assistants. An assistant can open a project without the launcher, check whether someone already has it open, export to React, and see which ports won't survive export. The editor no longer overwrites what an assistant wrote.
  • A parts library you can search, and so can an assistant.
  • For people coming from Bubble: 94 Bubble operators, each with the NodeGX way to do it. Eight are graphs you can open and run.
  • 104 worked examples, up from 67. Twelve are real apps from the original Noodl community. Every node type now has at least one example.
  • New parts: Advanced Columns, a date formatter, a full-name formatter, an email cleaner, a charts kit (Bar Chart and Sparkline) and a media recorder.
  • Search and social tags on the Page node, so a shared link shows a preview.

Good to know

  • Because of #26, some wires that used to be ignored now work. If a layout looks different after updating, that is probably why.

0.2.2

Download & notes

We built three real apps with NodeGX and fixed what broke. There is no 0.2.1. It was held back and its work is in this release.

New

  • Three templates. A members' area: sign-in, requests to join, a moderator queue, announcements, a diary and a directory, with access enforced by the backend. A site builder: pages stored as records, an admin panel, a theme editor, and a public site that shows only what is published. And three landing pages with no backend.
  • A Templates tab in the launcher.
  • Export as React code (Settings → Project). It shows what will and won't export before it writes anything, then writes a Vite + React project that talks to your deployed backend. 117 of 127 nodes export. The other 10 are marked Not exportable. Export is an alpha feature: don't ship a production app straight from it yet.
  • Eight lessons come inside the app.

Fixed

  • Dropdown no longer crashes when it has a selected value, and it comes with default items.
  • The Video node plays YouTube and Vimeo links, with start and end times.
  • Circle became Shape: polygons, stars, rounded corners and your own SVG.
  • A Text Input's placeholder is empty by default (it was "Type here…"). Icons are black by default. A var() value is kept when you edit it.
  • Contrast, border and focus fixes across the editor.
  • The MCP server refuses five kinds of wiring that it used to accept and that then failed when the app ran. An agent has to render a page before it can call the page finished.

0.2.0

Download & notes

Community and courses inside the editor, nodes you can write yourself, and fixes from the first user test.

New

  • An account that locks nothing. Sign in from the launcher. NodeGX works fully when you are signed out, and always will. Anonymous usage data is off unless you turn it on.
  • Community in the editor. Right-click a node and choose Ask about this node: the question already says which node you mean. Replies, accepted answers, a people directory, guides and call replays, without a browser.
  • Courses in the editor. A short conversation picks your learning path. A tutor sits over your work. A Learning folder keeps lessons apart from your projects. Check my work grades a lesson on your computer. You don't need an account to install a lesson.
  • Claude can write a lesson for you, through the MCP server. It only saves a lesson that passes every automatic check, and it makes the starting project by taking the answer out of the solution.
  • Lessons can check data: a collection, its columns, or how many rows it has.
  • Custom nodes (kits). Make a kit and install it in one of four ways. A custom node can do everything a built-in node can. A broken kit only breaks that kit, and the error says which kit and why.

Fixed

  • 23 of the 24 problems from the first user test. The AI can read live values from the running app. The chat box has several lines and a Send button (Enter sends, Shift+Enter starts a new line). You can select and copy AI text. Five popups no longer cut off their own buttons. The AI now draws the wires it asks for.
  • Data lessons get their own database, so the Log a thing lesson can be finished.
  • Easier to read. The default text colour failed WCAG AA contrast in both themes and has been replaced. Cards stand out from the canvas. About 30 colour pairs are checked automatically in both themes.
  • Safer. A zip file that tries to write outside its folder is refused. Lesson text can't contain javascript: links.

0.1.7

Download & notes

The AI became a conversation, and the Logic Builder became usable.

New

  • The Build panel is a conversation. One thread you can steer and interrupt. Accept and Discard sit on the change they apply to. You can see the model thinking, so a long answer doesn't look frozen. @ mentions for components, docs, pages and collections. Attach images and PDFs. The agent can look at the running app.
  • Logic Builder opens over your work and stays open while you move around. A bench runs your blocks with the app stopped. Saved blocks can be opened, renamed, edited and deleted. View Code shows the code you built.
  • Component Bench. Run any component on its own, with inputs made from its interface and a live view of its outputs. This works for logic-only components with nothing visual in them. Save named test states like Empty, Loaded and Error.
  • Clearer wires. A refused connection says why and suggests the wire you probably meant. Ports are grouped, and signal ports say what they do. Wires show direction by shape. You can bend a wire with anchor points.
  • Readable diffs. git log -p, git blame and GitHub pull requests show plain English instead of raw JSON. Nodes can carry a comment saying why they are there.
  • Cheaper AI. 89 tools became 20. An AI-built shop went from $5.83 to $3.55, and finished instead of running out of turns. The agent can render what it built and check the result.
  • The MCP server starts without a project, and creating a project connects it straight away. You don't need Node installed.

Fixed

  • The Library panel, lessons and templates had been empty for six days after the repository was renamed.
  • Design mode now shows on the canvas.
  • The updater could offer an older version as an update.
  • One broken node no longer blanks the whole canvas.
  • Nine dark icons on dark backgrounds.

0.1.6

Download & notes

No changes. This release exists so people on 0.1.5 could see the new update flow work. An update is always carried out by the version you already have, not the one you are installing.

0.1.5

Download & notes

Updates ask first.

  • Nothing downloads or installs until you click.
  • The update dialog shows the release notes first.
  • You can choose which version to install.
  • Download progress is shown, and stays visible if you close the dialog.
  • The launcher can offer updates, not only the editor.
  • Text has danger, notice and success styles.

0.1.4

Download & notes

Styles you set now show on the page. Five separate bugs were accepting styling and then throwing it away.

  • Font Weight and Font Style (italic) are ports. There was no way to set either before.
  • Align Items has Stretch, so cards in a row can be the same height.
  • Box Sizing is a port, and defaults to border-box. A 100%-wide node with padding no longer spills out of its parent.
  • Design tokens work on corner radius, border width and shadows. Before, a token there made the browser drop the whole style.
  • The validator now checks Text, Group, Image, Button and Text Input nodes, which it used to skip. A page whose content isn't connected to its Page node is an error instead of a blank screen.
  • Collections the AI creates get the columns you agreed on. They used to get none.
  • The first release that can update itself on macOS.

Good to know

  • Existing projects may look different, because settings that used to be ignored now work.

0.1.3

first alpha Download & notes

The first NodeGX release that installs and starts on macOS, Windows and Linux. macOS builds are signed and notarised. Windows and Linux builds are unsigned.

0.1.0, 0.1.1 and 0.1.2 were built but never worked once installed: each one crashed at startup because a file was missing. 0.1.3 fixed the cause.

Help → Report a problem… builds a GitHub issue with the details filled in and your secrets removed.

Before the first release

December 2025 – August 2026

The work between OpenNoodl 1.1.0 and NodeGX 0.1.3. The app was renamed NodeGX. All of this is in 0.1.3.

Getting it working again

  • The code builds again, with no type errors.
  • A test suite that runs, grown from about 540 tests to more than 700, and automatic checks on every change.
  • Electron 31 → 43, Node 20 → 24, and TypeScript 5.9 everywhere. The editor runs on React 19.
  • Installers for macOS, Windows and Linux, built automatically. macOS builds are signed and notarised.

The editor

  • The node canvas, the biggest file in the editor at 3,481 lines, was split into 20 tested parts.
  • jQuery removed: from 547 uses to none.
  • A new look: one colour palette everywhere, and light and dark themes (or follow your system). Every text colour passes WCAG AA contrast.
  • The Logic Builder: build logic from blocks.
  • A new code editor, a JSON editor, and templates for new projects.

Projects

  • A new project format: one file per component instead of one big file. Easier to compare, merge, and edit with AI.
  • Saving and reopening a project loses nothing. Eight gaps were closed.
  • Old projects are converted with a backup made first, checked, and rolled back if anything fails.
  • Diffs and merges that understand the graph.

AI

  • A catalog of all 135 node types, with every port, type and default, so an AI knows what exists.
  • A validator that finds unknown nodes, missing ports and broken connections. In the editor it is the Problems panel.
  • The NodeGX MCP server, so Claude Code and other agents can open, read, check and build NodeGX projects.
  • A live preview that runs in a normal browser, without the editor.
  • AI settings for Anthropic, OpenAI, OpenAI-compatible services, and local models through Ollama.
  • The Build panel: describe a component, watch the agent build it, then accept or reject it. It became six times cheaper (20¢ → 3.5¢ per component) and faster (90 s → 16 s).
  • Explain mode: select nodes and the AI explains what they do.

Data and backends

  • A built-in backend: cloud functions and workflows with a local database, with no outside service to set up. Parse was removed.
  • Connect your own backend: Directus, Supabase, Pocketbase or any REST API. Your database's tables and fields fill the node dropdowns. Nodes to query, create, update and delete records, and to get changes live.
  • An HTTP Request node.
  • 15 nodes for apps that talk to an AI: streaming (SSE and WebSocket), putting streamed text together, a global store with undo, and an example chat app.
  • Apps can run on React 19 (Project Settings → Runtime). Existing projects stay on React 18.3.
  • Design tokens work in deployed apps.

OpenNoodl 1.1.0

The editor renamed back to OpenNoodl. Most of these changes came from Eric Tuvesson of the Fluxscape team.

  • Date to String has a yearShort format.
  • Image has an On Error signal.
  • String Format has a Default label.
  • Switch has a Switched signal.
  • File Picker has a capture setting, to choose the front or back camera.
  • Push Component to Stack has a Target Page input.
  • Query has an Is Empty output.
  • Array has a First Item Id output.
  • The AI assistant moved from GPT-4 to GPT-4o-mini.

Code Crusher

The editor released under the name Code Crusher, with one-click installers.

Noodl becomes open source

Noodl's makers published its source code under the GPL-3.0 licence. Everything on this page starts from that code.