0.13.x✎

You can watch a compile happen.

0.13.x2026-09-07

Breaking changeFeatureChangeBugfix

You can watch a compile happen.

Release

  1. 0.13.0You can watch a compile happen.New2026-09-07

Warning

Worth knowing before you upgrade.
  • 0.13.0If you had scripts driving the daemon's HTTP API from a web page on some other origin, they stop working, and that is the point of the change. From a terminal — curl, a shell script, anything that is not a browser — nothing is different.
  • 0.13.0The read-only lock is only outside dynamic compiling. On Dynamic a compile follows every autosave, so locking on one would lock the canvas roughly whenever you stopped typing — and that mode exists precisely so that compiling is not something you think about. Outside it a compile is something you asked for and then wait for.
  • 0.13.0If you have been on 0.12.x with two editor windows open on the same daemon, the second window was never actually following a project switch. It kept editing the project it was opened on, which is what the 0.12.0 guard then refused to save — so the symptom was a save that would not go through rather than a graph in the wrong repository. Both halves work now.

Added

  • 0.13.0Compiling a project now shows the walk rather than its result. A notification in the bottom-right corner of the graph names the file being compiled and its place in the queue — 628 of 1202 — and fills as it goes. A slow project used to look exactly like a stuck one; the difference is now the thing on screen.
  • 0.13.0It stays out of the script analysis panel, which answers a different question — what is wrong with the graph you have open. A thousand rows of good news in there buries the one diagnostic you opened it for. The notification takes itself away a few seconds after the compile finishes, or when you click it.
  • 0.13.0Browse… on the opening screen, beside Open, which opens your operating system's own folder dialog rather than asking you to type an absolute path. It fills the field rather than opening the project, because choosing a folder and opening it are two decisions and the Open versus Initialise check belongs between them. The dialog runs on the machine the daemon is on — a browser cannot produce a filesystem path — so on a daemon with no desktop the button is replaced by the reason.
  • 0.13.0A compile started in one window is narrated in every open window, because it is something happening to the project rather than to the tab that asked for it.
  • 0.13.0The graph is read-only while it is being compiled, framed and labelled so it is obvious why. An edit made during the walk landed in the written file or did not, depending on where the walk had got to when you made it — and the file then disagreed with the graph, with nothing to say so.

Changed

  • 0.13.0The node category called "Roblox" is now called "Engine". It holds Get Service, New Instance, Find First Child, Destroy and the rest — engine and DataModel work — and Engine says what they do, where the old name said only which platform they were for. The nodes and their ids are unchanged, so nothing in your graphs moves; only the drawer they sit in is labelled differently.
  • 0.13.0The toolbar, the opening screen and the docs window carry the Roswaal mark — a file, a wire leaving it, and an empty pin. It takes the colour of the text beside it, so it works in both themes, and it is the tab's icon as well; the browser tab was still showing a default.

Fixed

  • 0.13.0Renaming a graph renames the file it compiles to. A graph carries its own name, and that name — not the file's — is what the compiler writes out. Renaming Greeter.nodescript to Hello.nodescript used to leave the graph still called Greeter, so it went on producing Greeter.luau with nothing anywhere saying so. Renaming now keeps the two in step, and creating and renaming run the name through the same function so they cannot drift apart again.
  • 0.13.0Two graphs with the same name no longer overwrite each other silently. They compile to one file, and the second used to win and report wrote for both — a project of 1202 graphs cheerfully said "1202 of 1202 written" when 1200 of them were the same file. The second is now refused, naming the graph that got there first and telling you to rename one.
  • 0.13.0Generated files stop being reported as hand-edited on Windows. The hash in a generated file's header is what tells Roswaal you have edited it. Roswaal writes LF; Git on Windows checks the same file out as CRLF, so after a clone the hash no longer described the bytes on disk and every generated file was refused as edited by hand — files nobody had touched. A line ending applied by version control is not somebody changing the code, and the hash now says so.
  • 0.13.0A compile that skipped a script miscounted the summary, subtracting it from the number of node maps written: a run that wrote two files could report "0 of 5 written". Rare before, because skipping was rare.
  • 0.13.0The daemon no longer answers other websites. It listens on 127.0.0.1, which keeps the network out — but not the browser already running beside it, and it used to tell every origin that asked that it was welcome to read the reply. Any page you had open could therefore point Roswaal at a directory and read files out of it. It now refuses a request whose Origin is not local, and one whose Host is not local either, which is the same attack wearing a DNS answer instead. Nothing you do changes: the editor is served by the daemon itself, and roswaal on the command line was never a browser.
  • 0.13.0The canvas no longer slows down when a large folder is open in the tree. Panning, zooming and dragging a node all re-rendered the whole project tree, once per frame, for no reason — nothing in the tree depends on the graph you are editing or on where the canvas is looking. With 1200 graphs showing, a frame took 20ms instead of 4ms and dragging visibly stuttered. It is now the same speed with the folder open as with it closed.
  • 0.13.0A tab is told again when the daemon changes project. The mechanism has been broken since it was introduced in 0.12.0: the list of listening editors was read by the sender and written by nobody, so every daemon-wide message went out to an empty room. Nothing failed and nothing was logged, which is why it survived a release. Compile progress travels the same channel and would have been just as silent.