Moud

Changelog

Everything that changed in Moud, release by release. The blog tells the story behind the bigger ones.

1.1.1#

Released on 7 November 2026. All changes since 1.0.0.

Breaking changes#

  • The Revo language addon is no longer bundled in the Moud jar. Install it separately to run Revo places.
  • On Linux, Moud needs glibc 2.38 or newer, as in Ubuntu 24.04, Debian 13 or Fedora 39. Older distributions such as Ubuntu 22.04 and Debian 12 are not supported yet.
  • Updates are signed with a new release key. Moud 1.0.0 cannot update itself to 1.1.1: install 1.1.1 once from Modrinth, and later updates install on their own again.
  • Client and shared scripts are now shipped as source and compiled by the player's game. Games published before this change must be published once more.
  • FLAC is no longer a supported sound format. Use OGG, WAV or MP3.
  • Java access (the java and mixin globals, the mixins/ folder, Revo and Java place scripts) now requires [trust] java = true in place.toml, and only applies to places you open yourself.
  • Random ticks are now off by default. Turn them on under [features].
  • UIDragDetector.dragAxis is renamed to axis and the "rotate" drag style to "rotateAxis", to match DragDetector. UIGridLayout.cellPadding is renamed to padding, like the other layouts.
  • UITextSizeConstraint.maxTextSize now defaults to 0, meaning no limit.
  • Shaders that use ## token pasting, or pass a function-like macro without calling it, are refused at publish.
  • getmetatable on engine objects now returns a string instead of the metatable.
  • Under a fleet, memory:queue is shared by every server of the game, including through the older addAsync, readAsync, removeAsync and getSize names.
  • Anchored parts moved by scripts or tweens now report a velocity and angularVelocity while they move, and carry players and loose parts standing on them.
  • Moud's own buoyancy replaces the physics library's. A part floats when its density is below 1 in water or below 3 in lava, on whichever side simulates it.
  • worldCframe and position of a bone or part in a view model now give where it is seen in the world, in metres, instead of view model units. cframe and transform are unchanged.
  • A Folder at the top of the world now streams what it holds piece by piece, like a Model, instead of always being sent whole.
  • vertexSnap and textureWarp are removed from parts and MultiMesh; the retro look is a custom shader now, see Shaders.

Platform#

  • Moud opens on a home screen with games, friends, a Continue playing row and a Studio button. A single copy of Moud plays every game, signed in with the Minecraft account it runs on.
  • Every game has a page on the website and in the client, with pictures, votes, badges, leaderboards, updates, servers and a Play button that picks a server with room in the player's region.
  • The website has one search for docs, games and forum topics, a blog, a changelog page, a light theme, legal pages and an account page to download your data, opt out of analytics or delete your account.
  • Games have an age rating set from a questionnaire. Accounts under 15 only see and join games rated up to 13+, and games rated All ages or 9+ use a stricter chat filter.
  • A notifications inbox collects friend requests, invites, badges, review decisions and releases from followed creators, and settings can follow your account to another computer.

Friends and joining#

  • Friends, parties of up to six that follow their leader, and invites from the Esc menu, a game's page or game.players:promptInvite.
  • moud:// links open a game, a server or an invite, and any join that starts outside the game asks for confirmation first.
  • After a dropped connection your seat is held for two minutes, and game:teleport sends players to another game with up to 4 KB of data.

For creators#

  • Badges, analytics with retention cohorts, cross-server leaderboards and matchmaking queues through game.badges, analytics.event, leaderboard and matchmaking:queue.
  • A game becomes public once staff approve a version, and games have a live and a beta channel.
  • Studios share games between accounts with roles, and scoped API keys let moud publish ship a build from CI.
  • Webhooks, live config and translations edited on the website, and crash reports grouped by stack.
  • Luau packages can be published to the catalog and required with require("@pkg/name").

Safety and moderation#

  • Players can block and report each other, and creators can ban players from every server of a game with game.bans:ban.
  • text.filter(text, player) checks text against English and French word lists.
  • Staff can ban accounts and take games down, every action is kept in a moderation log, and copyright notices can be answered with a counter notice.

Fleets and servers#

  • moud fleet runs every server of a game on your own machine, always on the latest approved version, and players enter with a signed, single-use ticket.
  • Under a fleet, store, messaging, memory:map and memory:queue reach every server of the game, and the [game] section of place.toml groups several places into one game.
  • The catalog API runs separately from the website, scales to several processes, exposes Prometheus metrics and describes every route under /v1 in an OpenAPI spec.
  • Window > Server Console shows a running server's log and runs admin commands declared with game.admin:command.

Publishing#

  • Project menu > Publish runs the export checks, uploads only new files and shows a health report. Game files stream in during play and are kept in an encrypted store.
  • Pictures, models, sounds, videos, shaders and JSON files have size limits, and scripts may run for 10 seconds between waits and use 512 MB per VM.

Collaborate#

  • Several people can edit one place at once, with shared selections and cursors, team chat, edit and view roles, script claims and a version history saved every minute.

Editor#

  • A new top bar holds the menus, playtest controls with Play here, Pause and Step, the tool tabs, search and Share. Ctrl+K searches commands, instances and properties.
  • The viewport toolbar adds selection modes, snapping, face snapping, a measure tool and an orthographic split view.
  • Prefabs with per-property overrides, scene backups, rebindable shortcuts that follow the keyboard layout, and a debug window with a frame profiler, memory view and network inspector.
  • The loading screen, pause menu and disconnected screen are ScreenGuis edited like any other.
  • A material library, a particle editor with curves, and 16-bit PNG height maps.

Code editor#

  • Scripts open in a Code tab powered by luau-lsp, with completion, diagnostics, rename, quick fixes, multiple cursors, formatting and navigation.
  • Breakpoints, logpoints, stepping and watch expressions pause only the stopped script.
  • A command bar runs Luau on the client or server, and every save is kept in the script's history with autosave and crash recovery.

GUI#

  • A UI tab edits screen and world GUIs with guides, a grid, alignment tools and a nine-slice editor.
  • UIDragDetector, UIPageLayout, UITableLayout, UIFlexItem, UITextSizeConstraint and UIVirtualList, and GUI objects can be rotated.

Animation#

  • A rebuilt animation editor with Blockbench import and export, a pose library, onion skinning, a dope sheet and a graph editor, on clip format 3.
  • Clips can be retargeted to another rig, and animation graphs hold states, transitions and blend spaces driven from scripts.

Building and terrain#

  • The Build tab offers brushes, region and box tools and a block palette, G builds by hand at the editor camera, and Minecraft worlds can be imported as terrain.
  • Seeded Luau terrain generators with the noise library, and Spline, WheelConstraint and AeroForce with car, boat and plane controller scripts.

Rendering#

  • Parts shade each other per pixel from their real shapes, including while moving.
  • Part, sky and post shaders, a physical sky, HDR with auto exposure, FXAA, and settings.graphicsQuality for slower computers.
  • MultiMesh, skinned glTF models, Bone instances, mesh collision and optional occlusion culling.

Scripting and engine#

  • Errors show the Luau stack and the failing line.
  • http.websocket, files.read, xml.decode, ColorValue, game.timeScale and DragDetector.
  • store:increment is atomic, store:set accepts a ttl, and each key keeps its last 20 versions.
  • Standard modules @moud/promise, @moud/component, @moud/validate, @moud/replicated and @moud/predict.
  • streaming:setRelevance and instance:setLocal control what each client receives and draws.

Performance#

  • Still parts are drawn from a static buffer behind a depth prepass, and baked occlusion and light grids only redo what changed.
  • GUI layout and the editor panels no longer rebuild every frame, and a place without blocks ticks almost nothing.

Security#

Catalog#

  • A creator could download another game's server bundle by its hash, through the content route or by naming another game's version. Server bundles are now only served to their own game's fleet, creator and reviewers.
  • Uploaded archives are decompressed with strict limits, every route has a request size limit, and joins, social actions, anonymous writes and fleet heartbeats are rate limited.
  • Unused join tickets can no longer reserve seats, uploads and stored data have quotas, and unreleased game pictures are private.
  • Forwarded addresses are only trusted from configured proxies, errors never include internals, and crash reports store a keyed hash of the sender's address.
  • Deleting an account erases the player's data in every game and revokes their API keys.
  • Webhook deliveries refuse private addresses and connect only to the address that was checked.
  • Package versions are immutable, the server console needs its own permission and is logged, and the Luau console can never be used through a key.

Website#

  • An @mention in image alt text could break out of the HTML attribute, and links with a title skipped the external link warning.
  • A crafted address after sign-in could redirect to another site, and the sign-in confirmation step had no rate limit.
  • A topic author could mark any post as their answer, and editing a deleted post restored removed text.
  • Fonts, avatars, skins and link previews no longer expose visitors' addresses to third parties, and dependencies are updated for known advisories.

Engine#

  • A table referencing the same subtable many times could freeze the game beyond the script time limit.
  • Three ways to hide exponential macro expansion from the shader check are closed.
  • The network protocol refuses unbounded string tables and peer-sized allocations, and script values and place.toml are bounded.
  • Packages are pinned by a content hash, bytecode from another machine is never run, and downloaded games never receive Java access.

Client#

  • A % in a game, player, file or instance name could crash the client.
  • A place could ship its own stylua or luau-lsp executable that ran when formatting or opening the code editor.
  • Editor paths are restricted to the place, a Collaborate address of .. wrote outside the projects folder, and on Windows editors start without cmd.
  • Downloaded data is size-checked before use, the moud:// handler only accepts ids, and the updater refuses unsigned jars.

Server#

  • A join ticket answered twice no longer redeems twice, a part's owner can no longer move it faster than it can travel, and input messages are rate limited.

Build#

  • Continuous integration checks the API, website and engine on every push, with least-privilege workflows, release checksums, pinned sibling libraries and Dependabot.

Fixes#

  • A script VM leaked on every place reload, and a race with the watchdog could disable the script time limit.
  • Textures, view models and instanced meshes are released instead of accumulating.
  • Point and spot lights shade surfaces with their colour again, and contact shadows and outlines no longer show artifacts.
  • Large scene pastes no longer disconnect the editor, and stopping a playtest restores the window settings scripts changed.
  • Two simultaneous publishes could receive the same version number.

Documentation#

  • New pages on playing, publishing, fleets, Collaborate, packages, safety, player data, the catalog API and writing an addon, and new sections on the code and animation editors and shaders.