Skip to content

Releases

v0.8.1

Choose a tag to compare

@rawframe-release rawframe-release released this 08 Nov 13:39
ecf3bf2

0.8.1 (2026-11-08)

This release fixes which repository Studio's git works in. No wire, save, checkpoint or cooked format changes.

Fixed

  • Studio runs git for its Changes tab in the game's directory even when GIT_DIR, GIT_WORK_TREE, GIT_INDEX_FILE or git's other repository variables are set, as git sets GIT_DIR for a hook it runs from a linked worktree. Before, git worked in the repository those variables named, so Studio's status, add and commit could act on another repository than the game's. A child process can now be started without chosen variables of its parent, through process::ChildSettings::withheld (#227).

v0.8.0

Choose a tag to compare

@rawframe-release rawframe-release released this 05 Nov 15:28
8937b64

0.8.0 (2026-11-05)

This release moves the engine to Maul2D 1.3.1. Body poses step to the same bits as before, but the 2D physics digest changes for every world, and a few edge cases of 2D physics act differently. No wire, save, checkpoint or cooked format changes.

Changed

  • Breaking: The engine is built on Maul2D 1.3.1, from 0.6.0, vendored from its release archive with its SHA-256 checked. What a game sees change (#225):
    • The 2D physics digest changes for every world, since Maul2D's world hash now covers each shape's broadphase box and each body's sleep threshold. Body poses are unchanged: a scene of 20 bouncing balls ends on the same bits after 120 ticks.
    • Rays, sweeps, overlaps and character moves between steps see a shape that moved more than 0.1 m in the last step where it is now, instead of missing it or finding it where it was.
    • A body with a fixed rotation no longer turns when a game gives it an angular velocity or an angular impulse.
    • A bullet body passes no wall when more than 64 shapes crowd its path, and a character meeting more than 16 surfaces keeps those of the lowest shape slots.
    • The 2D step fails at a tick shorter than 1 microsecond or longer than 10 seconds, before it changes anything, instead of leaving the world standing still. A dedicated server with 2D physics takes a world.tick_rate of 1 to 1,000,000.
    • Physics2DStatistics::targets counts only kinematic targets carried out. A target too far to reach in one tick within Maul2D's 100 km/s speed limit is cleared, as before, but no longer counted.

v0.7.0

Choose a tag to compare

@rawframe-release rawframe-release released this 05 Nov 12:33
d7bc590

0.7.0 (2026-11-05)

This release moves the engine to Maul Nav 1.2.0, Maul UI 1.3.3 and Maul Unicode 1.1.2. A navmesh's tiles bake to new bytes, and agents that avoid each other move by slightly different amounts. No wire, save, checkpoint or cooked format changes, and the engine keeps no baked tile across runs.

Changed

  • Breaking: The engine is built on Maul Nav 1.2.0, from 0.2.0, vendored from its release archive with its SHA-256 checked. rawframe/navigation's API does not change. What a game sees change (#222):
    • A navmesh's tile bytes and fingerprint change: tiles bake under generator 6 and tile format 4. The fingerprint a server reports in its navigation_summary record moves.
    • A walkable strip one cell thin now gets a polygon, so a path may cross it, and heights along long edges are sampled more finely, which reaches the height of a path's points over uneven ground. Paths over the same polygons are otherwise unchanged.
    • Avoidance velocities are rounded to binary32 and never pass an agent's maximum speed, so a game's agents that avoid each other in rawframe.navigation.avoid, as tycoon's customers do, move by slightly different amounts each step.
    • A navigation query past 1e100 m from the navmesh's origin finds nothing.
  • The engine is built on Maul UI 1.3.3 and Maul Unicode 1.1.2, each vendored from its release archive with its SHA-256 checked. Maul Window, Maul Tween and Maul RHI stay at 0.12.0, 1.0.0 and 0.15.0. Layouts, styles, draw lists, line breaks, shaped text, glyph images and the accessibility tree are unchanged; line breaking takes 1 to 2% longer, since Maul Unicode now checks every iterator it is given (#221).

v0.6.1

Choose a tag to compare

@rawframe-release rawframe-release released this 05 Nov 08:14
e6f1c43

0.6.1 (2026-11-05)

Fixed

  • A link to a tooling endpoint or a shared session's host no longer holds whatever the endpoint sends. A line past the most its protocol sends at once ends the link: 4 MiB for the tooling protocol, and a 16 MiB session record for the authoring one. rawframe-author connect then says "the endpoint sent a line past 4 MiB", and the debug adapter says "the game's tooling endpoint sent a line past 4 MiB". What the endpoint says unasked and is not yet taken is kept up to 64 MiB, each line counted with 64 bytes more, and past that the oldest lines are let go. rawframe-author connect and the debug adapter never take such lines, so they held every one before. ToolingLink and HostLink gain overran(), and link.h gains kMostUnheardBytes and kUnheardLineCost. The engine's own endpoints send no such line, so nothing they do changes (#219).

v0.6.0

Choose a tag to compare

@rawframe-release rawframe-release released this 05 Nov 05:36
596829b

0.6.0 (2026-11-05)

Changed

  • Breaking: A window request that Maul Window answers too large, such as a file dialog's choice of more files than it takes (256 by Maul Window's default), completes with the new window::Outcome::TooLarge instead of Failed. Apart from file dialogs, the engine reads the outcome only of a clipboard read, and only whether it is Done, so nothing else acts differently (#215).
  • Breaking: view::FileDialogs::Answer gains failure, which says why a dialog that was neither chosen from nor closed gave no paths: Failed (the platform could not show it, no chosen file could be given as a path, or its paths could not be read), Denied (the platform refused to show it) or TooMany (more files were chosen than a dialog takes) (#215).

Fixed

  • Studio says why a file dialog gave no paths: "the file dialog failed", "the file dialog was refused", or "more files were chosen than the dialog takes; nothing was done". Before, it said nothing, as for a dialog the user closed, so a failure could not be told from a cancel. A closed dialog, and one another dialog replaced, still say nothing (#215).

v0.5.0

Choose a tag to compare

@rawframe-release rawframe-release released this 05 Nov 02:30
531fa3b

0.5.0 (2026-11-05)

This release moves the engine to Maul UI 1.3.2, Maul Window 0.12.0 and Maul Unicode 1.0.0, and the debug adapter now says how a debugged game went. No wire, save, checkpoint or cooked format changes.

Changed

  • Breaking: The engine is built on Maul UI 1.3.2, Maul Window 0.12.0 and Maul Unicode 1.0.0, each vendored from its release archive with its SHA-256 checked. Maul Tween 1.0.0 and Maul RHI 0.15.0 stay. Maul Unicode 1.0.0 has 0.13.0's API, data and results. Layouts, styles, draw lists, line breaks, shaped text, glyph images and the accessibility tree are unchanged. What users see change, from Maul Window 0.8.1 to 0.12.0 (#212):
    • In Studio, a file dialog choice that holds a file the platform cannot give as a path gives the other paths, and Studio says some of the files chosen were left out. Before, the whole dialog failed and Studio did nothing. Such a file is a path that is not UTF-8, a portal's choice that is no local file, or an item with no file system path on Windows.
    • On X11, a paste takes only the answer to its own clipboard read, and a drop only its own conversion's answer, never a late answer to an earlier one. A read whose answer does not come fails after five seconds, and a drop is then delivered truncated, which Studio says.
    • On X11, an IBus or Fcitx commit or composition is held up to the text limit, and one past it resets the input state instead of being dropped. On X11 and Wayland, a compose sequence that types 64 bytes or more types its text instead of nothing.
    • On Wayland, a drag that enters while a drop is still being read is refused.
    • On Windows, a composition's caret, selection or clause inside a surrogate pair ends before the pair. A generic HID gamepad takes its controls from the first 32 Button and Generic Desktop capabilities, whatever other pages it has, so a pad with many controls gets its buttons, axes and hats. A pad whose reports cannot be read, or that is left with no controls, is not added.
    • In the browser, text another script pushes and a typed key's character turn a lone surrogate into U+FFFD instead of being lost.
    • On Android, a drop of a document the game cannot be granted no longer ends the game, and a drop's copy no longer waits without end on a provider that sends nothing.
  • Breaking: window::Windows::dialogFiles returns a window::DialogFiles: the paths, and truncated when the platform left chosen files out. view::FileDialogs::Answer carries truncated (#212).

Fixed

  • The debug adapter says how a debugged game went: "the game's tooling endpoint kept silent" for a game that stopped answering, as one held by a native debugger does, or "closed" for one that stopped. It says so in the response to the request that found it, and in an output event before the session's terminated event. Before, a request was answered "the game's tooling endpoint went" either way, and a poll that found the game gone ended the session with no reason at all (#214).
  • rawframe-author connect says "the endpoint closed" for a record sent after the endpoint closed but before the close was seen. Before, it said "the record could not be sent" (#214).

v0.4.0

Choose a tag to compare

@rawframe-release rawframe-release released this 04 Nov 23:21
0992e93

0.4.0 (2026-11-04)

Changed

  • Breaking: A QUIC connection that ends because nothing came from the peer for its idle timeout is reported with the new network::CloseReason::Silent, where it was PeerGone. Game sessions still end with EndReason::PeerGone, so no game result changes (#209).
  • Breaking: An authoring tooling link opens its QUIC with a 30 s idle timeout instead of 10 s, so the endpoint's own idle timeout decides when silence ends the link. With the server's default network.quic.idle_timeout_ms of 10000 nothing changes. Against a server set above that, Studio's play preview, which sends and polls without waiting, notices a server gone silent after that server's timeout, up to 30 s, instead of after 10 s (#209).
  • The engine is built on Maul UI 1.3.0, vendored from its release archive with its SHA-256 checked. It names the same Maul Window, Unicode, Tween and RHI releases as 1.2.0, so those stay. No engine result changes: Maul UI 1.3.0's fixes are to a password field the engine never makes and to accessibility updates of kinds the engine never sends (#207).

Fixed

  • rawframe-author connect says "the endpoint kept silent" for an endpoint that stops answering, whichever comes first: its 10 s wait for a reply or the connection's idle timeout. When the idle timeout came first, it said "the endpoint closed" (#209).

v0.3.0

Choose a tag to compare

@rawframe-release rawframe-release released this 04 Nov 18:23
63848dc

0.3.0 (2026-11-04)

Changed

  • A browser's WebTransport connection is closed with H3_SETTINGS_ERROR (0x109) when its SETTINGS frame carries one of HTTP/2's setting identifiers (0x00 or 0x02 to 0x05) or names one identifier twice. Before, it opened a session. RFC 9114 requires the first, and the second keeps the frame to one form. Unknown identifiers, including the grease ones browsers send, are still passed over, and browsers send neither refused kind (#203).

v0.2.2

Choose a tag to compare

@rawframe-release rawframe-release released this 04 Nov 09:51
82f6c55

0.2.2 (2026-11-04)

Fixed

  • rawframe-author connect names what happened when a record gets no reply. "The endpoint closed" now means the endpoint closed the connection, and "the endpoint kept silent" means the connection stayed open but no reply came within ten seconds. A record that could not be sent, such as one past the stream's 4 MiB, now gets "the record could not be sent". Before, all three printed "the endpoint closed". Standard output and the exit status are unchanged (#194).

v0.2.1

Choose a tag to compare

@rawframe-release rawframe-release released this 04 Nov 07:46
c52dbdd

0.2.1 (2026-11-04)

Fixed

  • A navmesh bake whose area is finite but far from the grid, such as one reaching 1e30 m, is refused as Invalid without first converting its tile places to an index, which was undefined behavior. A game's navigation bakes the area its static geometry changed, and a game's scripts place that geometry. An area that bakes today bakes the same tiles (#190).