Skip to content

Releases: The-Low-Code-Foundation/NodeGX

0.1.7

Choose a tag to compare

@github-actions github-actions released this 13 Aug 19:34

423 commits since v0.1.6, over five days. Two headlines: the AI stopped being a text box you hope for the best with, and the visual function went from openable to usable.

📖 Read the full changelog, in plain language →
💬 Join us on Discord · 🎥 Tutorials & updates on YouTube


Les grandes lignes

💬 The Build panel is a conversation

One thread you can steer, interrupt and come back to — no mode to choose before you start. Accept and Discard sit on the card that proposed the change. A reasoning channel and a heartbeat, so a long turn no longer looks hung. @ mentions for components, docs, pages and collections. Attachments including images and PDFs. And the agent can be shown the running app — the first time it sees the page instead of inferring it from the graph.

🧩 Logic you can build with

The Logic Builder floats over your work, stays open as you navigate, and its tab says which node it belongs to. A bench runs your blocks with the app stopped — set sandbox values, press Run, watch the values fill in. Saved blocks describe themselves and can be opened, renamed, deleted and edited from project settings or the launcher. View Code shows the program you wrote rather than the traced build nobody could read.

Fourteen fixes here came from eleven minutes of actually building with it — including one Delete that deleted twice, a Create variable that did nothing at all, and fields you could not read while typing in them.

🧪 Run one component on its own

The Component Bench mounts any component by itself, with an inputs rail generated from its own interface and a live outputs read-out — so a logic-only component with nothing visual in it is previewable for the first time. Save named scenarios (Empty, Loaded, Error) onto the component.

🔌 Wires you can read

A refused connection now says why and offers the wire you probably meant. Every port belongs to a named group; every signal port says what it does. Wires carry direction by shape, not only colour. You can bend a wire with anchor points, and they survive export and re-import.

🏷️ A graph you can hand to a human

git log -p, git blame and a GitHub PR view now show English instead of raw JSON — a renamed component is one line in a diff. Nodes can carry a "why" comment. A component description you write is no longer deleted by the next save.

💸 The AI writes better and costs less

89 tools became 20, cutting the first-turn prompt from 22,968 to 8,578 tokens. A full AI-built storefront went $5.83 → $3.55 (−39%) and finished in 47 turns instead of being cut off at 60. The agent can render what it just built and read the result back. Output is gated, not advised: rejections come back as diagnostics with suggested fixes.

🚪 An agent can find NodeGX before you have a project

The MCP server now starts with no project open, and creating one binds the live session — no restart, no reconnect. You do not need Node installed.

🩹 Repairs worth naming

  • The Library panel, lessons and templates had been empty for six days — a repo rename silently broke the content origin, and nothing in GitHub's status API showed it.
  • Design mode now says so on the canvas, instead of silently swallowing your clicks two panels away from any indication.
  • The updater could offer to move you backwards — caught while testing this very release.
  • One malformed node no longer costs you the whole canvas.
  • Nine dark-on-dark icons, the worst at 1.16:1.

Installing

macOS Signed and notarised — no Gatekeeper workaround needed. Apple Silicon and Intel builds.
Windows Not code-signed yet, so SmartScreen warns on first run: More info → Run anyway.
Linux AppImage and .deb, unsigned — normal for Linux desktop distribution. There is no in-app updater on Linux.

Updating from an earlier version. If you are on v0.1.5 or later you will be asked before anything downloads, you will see the notes first, and you can watch the progress. If you are on v0.1.4 or earlier it will still arrive quietly on quit — that is v0.1.4's code doing the delivering, and no release can fix the updater that installs it.


Known and open

We write down what we found and did not fix.

  • The Logic Builder's help text still clips at the narrowest window width. The test that was supposed to catch it was measuring font metrics that run 16% low, so it passed while the text was visibly cut off.
  • Direction chevrons sit oddly where a wire turns a corner.
  • An agent cannot yet write a wire label — that one is a deliberate cost decision, not a bug.
  • Web search from the composer is specced and not built.

Found something? Report it or come and say so on Discord.

0.1.6

Choose a tag to compare

@github-actions github-actions released this 08 Aug 07:17

No functional change. This release exists so 0.1.5's new update flow has
something to offer.

A release cannot demonstrate its own updater: the code that performs an update
is the one in the installed version, not the one being installed. That is why
0.1.4 delivered 0.1.5 the old silent way — 0.1.4 was doing the delivering.

If you are on 0.1.5, this is the first update that will ask before it does
anything: you should see the dialog, the notes you are reading now, a download
you can watch, and a version dropdown offering 0.1.6, 0.1.5, 0.1.4 and 0.1.3.

If you are on 0.1.4 or earlier, this will still arrive quietly, and the next one
after it will not.

0.1.5

Choose a tag to compare

@github-actions github-actions released this 08 Aug 06:56

Updating stops happening to you.

Until now an update downloaded 169MB and replaced the app when you quit, with no
prompt, no progress and nothing asked. The first time that ran for real it was
reported as "it doesn't show anything about updating" — by someone who was being
silently updated as they said it. This release makes an update something you
agree to, having seen what is in it.

What changed

  • Nothing downloads or installs until you click. Both the automatic download
    and the install-on-quit are off.
  • The update dialog leads with the release notes. An update can carry
    breaking changes, and the old dialog could only say "a new version has been
    downloaded" — after it already had.
  • You can choose the version. If you are several releases behind you are not
    forced to the newest one, and the list only ever offers versions this platform
    can actually install. A pre-release toggle is there for when unstable builds
    start being published.
  • Download progress is visible, with the remaining time and a reminder to
    stay open, in a pill that survives closing the dialog. The download is not
    dismissible even though the dialog is.
  • The launcher can offer an update at all. It never could: the old prompt
    lived in a component that wraps only the editor, so updates could only be
    offered to someone already inside a project — the one place a restart costs
    most.

Note for anyone on 0.1.4 or earlier

This release is delivered the old way, one last time — quietly, on quit, because
that is the code doing the delivering. Everything above starts applying to the
next update after this one.

Also

Text gains danger, notice and success types. The stylesheet had carried them
all along with no way to select one, so a red line of text meant hard-coding a
colour — which is how a palette stops being a single file.

0.1.4

Choose a tag to compare

@github-actions github-actions released this 08 Aug 06:04

Styling you write now actually reaches the page.

This release closes five separate mechanisms that silently discarded correct
input. Each of them accepted what you authored, reported success, and rendered
something else — which is why a carefully styled page could come out looking
like no styling had been applied at all.

Typography

  • Font Weight is now a port. There was no way to set a font weight on any
    node. The design system has shipped nine weight tokens (--font-thin through
    --font-black) and four Inter faces to serve them all along, and every element
    variant specifies a weight — but nothing could consume any of it, so text
    rendered at regular weight however you styled it. Accepts a token
    (var(--font-semibold)), a plain number (600), or Auto.
  • Font Style is now a port, for italic. Same gap: the blockquote variant has
    always asked for italic and nothing could apply it.

Layout

  • Align Items gains Stretch. A row of cards could not be made equal-height at
    all — each sized to its own content, so one with a shorter description sat
    proud of its neighbours, and the only workaround was a hand-computed fixed
    height that broke on the next content change.
  • Box Sizing is now a port, defaulting to border-box. Any node with a width of
    100% and padding used to overflow its parent by exactly the padding.
  • Design tokens work on radius, border width and shadow lengths. A token on
    one of these became an invalid value and the browser dropped the whole
    declaration, so colour and type resolved while every rounded corner, border and
    shadow silently vanished.

Validation

The checks that should have caught all of the above were switched off for the
exact nodes a page is built from — Text, Group, Image, Button, Text Input.

  • A parameter naming a port that does not exist is now reported.
  • New: a parameter is reported when a sibling has switched its port off —
    setting an image's fit without setting its size mode, for example, where the
    fit is silently ignored.
  • A page whose content is not connected to its Page node is now an error rather
    than a blank screen that validated clean.

AI authoring

  • Provisioned collections are created with the columns the conversation agreed.
    They were being created with none, so every field a generated app tried to read
    or write pointed at nothing.
  • The style vocabulary can no longer teach a style with no port behind it. Three
    separate rounds of this had shipped; a check now makes a fourth impossible.

Also

  • @nodegx/core, the companion library exported projects depend on.
  • A render-from-disk developer tool for rendering a project against a
    working-tree runtime, with no editor involved.

Upgrading

Existing projects may look different, deliberately. Parameters that were
previously ignored now take effect. If a project already had a font weight set on
a Text node, that text will now render at that weight; padded full-width nodes
will size to border-box; tokens on radius and border will resolve. In every case
the new rendering is what the project always asked for — but it is a visible
change, so look over an existing project after upgrading rather than assuming
nothing moved.

This is the first release that can auto-update. macOS builds are signed and
notarised, which Squirrel.Mac requires; earlier builds were not, so the
in-app updater had nothing it could install. Linux remains download-only by
design — electron-updater cannot replace an AppImage it did not launch.

v0.1.3 — first alpha

Choose a tag to compare

@github-actions github-actions released this 07 Aug 18:29

NodeGX v0.1.3 — first alpha

The first NodeGX release that's actually signed, notarized, and confirmed to launch
on all three platforms. If you tried v0.1.0–v0.1.2, they never fully worked — see
below.

Install

  • macOS: download the .dmg for your chip (mac-arm64 for Apple Silicon,
    mac-x64 for Intel). Signed and notarized — no Gatekeeper prompt.
  • Windows: download the .exe. Not code-signed yet, so Windows SmartScreen will
    warn on first run — click "More info" → "Run anyway". This is expected for a new,
    unsigned publisher; see
    INSTALLING-UNSIGNED-BUILDS.md.
  • Linux: download the .AppImage (chmod +x it and run) or the .deb. Unsigned,
    which is normal for Linux desktop distribution.

What's new

This is the first alpha build of the NodeGX fork — a visual, node-based app builder
with a built-in backend (cloud functions + workflows, no third-party service to
provision separately). It's an early release: expect rough edges.

Known issues in earlier drafts, fixed here

v0.1.0 through v0.1.2 were built and drafted but never actually worked as packaged
apps — each fixed one launch-time crash and uncovered the next:

  • v0.1.0: no macOS artifact at all.
  • v0.1.1: macOS build crashed to a blank black launcher screen —
    Cannot find module 'eslint-linter-browserify'.
  • v0.1.2: same crash, different missing module — Cannot find module 'globals'.
  • v0.1.3: both of the above fixed, plus a third (lodash) found by the same
    audit before it could cause the same crash. Confirmed launching on macOS.

All three were the same underlying packaging gap: a couple of dependencies pulled in
by the code editor's live-lint feature weren't being traced into the packaged app by
the build. Root-caused and fixed rather than patched one crash at a time.

Feedback

This alpha's whole point is hearing what's broken. Help → Report a problem… in the
app builds you a pre-filled GitHub issue with the relevant diagnostics — secrets and
project content are redacted before you ever see the "send" button, and you can review
exactly what gets sent first. Or open an issue directly.

See it in action

Links

v1.1.0

Choose a tag to compare

@richardosborne14 richardosborne14 released this 25 Sep 20:01
9492993

NOTE: As of 15/10/24 the Mac Intel version isn't working and has been removed from the download list. We're working to resolve the issue.

UPDATE: The installer for Mac Intel works now BUT you need to open it once, then open your Settings > Security and click 'Open anyway' on the alert concerning OpenNoodl.

OpenNoodl v1.1.0. We have Eric Tuvesson from the Fluxscape team to thank for pretty much all of these updates.

Unfortunately you're going to have to re-import your projects and re-add your Cloud Services after installing the editor. Code Crusher v1.0.0 projects can be imported into OpenNoodl v1.1.0 without any compatibility issues.

Note: Building a project with OpenNoodl v1.1.0 will cause minor backwards compatibility issues if trying to open the same project with the original editor Noodl v1.0.1

Feature changes:

  • Added ‘yearShort’ format to Date to String node
  • Added an ‘On Error’ signal to the image node
  • Added ‘Default label’ to the String Format node
  • Added ‘Switched’ signal output to the Switch node
  • Added ‘capture’ attribute to the File Picker node:
    • The capture attribute value is a string that specifies which camera to use for capture of image or video data. A value of ‘user’ indicates that the user-facing camera and/or microphone should be used. A value of ‘environment’ specifies that the outward-facing camera and/or microphone should be used. If this attribute is missing, the user agent is free to decide on its own what to do. If the requested facing mode isn't available, the user agent may fall back to its preferred default mode.
  • Switch AI Assistant from GPT-4 to GPT-4o-mini
  • Added a ‘Target Page’ input to the Push Component to Stack node
  • Added ‘Is Empty’ output to Query node
  • Added ‘First Item Id’ output to Array node