From 8317333e93727f6185c3ad611a56d6f3259af1c4 Mon Sep 17 00:00:00 2001 From: Olivier Biot Date: Wed, 9 Sep 2026 07:43:59 +0800 Subject: [PATCH] Release 20.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stamp the release date on the changelog. `packages/melonjs/package.json` is already at 20.4.0, so this is the only change the release itself needs. Verified with a full `pnpm dist`: clean, lint (0 errors), 276 test files / 6742 passing, build, types, and docs — check-doc-readme passed, typedoc reported 0 errors, and llms.txt regenerated over 445 pages. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_012Aa37KGXZcnVrbn1yG4j1N --- packages/melonjs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/melonjs/CHANGELOG.md b/packages/melonjs/CHANGELOG.md index 1068f9616..e16c844a6 100644 --- a/packages/melonjs/CHANGELOG.md +++ b/packages/melonjs/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [20.4.0] (melonJS 2) - _unreleased_ +## [20.4.0] (melonJS 2) - _2026-09-09_ ### Added - `level.load()`, `reload()`, `next()` and `previous()` take an `async` option: set it and the call hands back a promise that settles once the level is actually in the world, instead of the boolean it has always returned. `options.onLoaded` still fires either way, so the two forms mix freely, and omitting the flag changes nothing — the existing signatures are preserved as TypeScript overloads, so `const ok: boolean = level.load("map1")` still compiles. Running out of levels still reports `false` rather than rejecting, and an unknown level id throws synchronously in both forms: that is a typo, not a load failure, and it should not need `await` to surface ([#1646](https://github.com/melonjs/melonJS/issues/1646))