|
8 | 8 | - Tiled: `detectObjectType()` now checks `settings.class` and `settings.name` against the factory registry before falling through to structural detection, enabling class-based dispatch for custom types |
9 | 9 |
|
10 | 10 | ### Changed |
| 11 | +- Application: `new Application(width, height, options)` now auto-calls `boot()` if the engine hasn't been initialized, making it a valid standalone entry point |
| 12 | +- Application: `boot()` moved to `system/bootstrap.ts` — decoupled from `index.js` |
| 13 | +- Application: `game` singleton decoupled from barrel `index.js` — internal modules no longer import from the barrel |
| 14 | +- Application: new `canvas` getter, `resize()`, and `destroy()` convenience methods |
| 15 | +- Application: `GAME_INIT` event now passes the Application instance as parameter |
| 16 | +- Stage: `onResetEvent(app, ...args)` now receives the Application instance as first parameter, followed by any extra arguments from `state.change()` |
11 | 17 | - EventEmitter: native context parameter support — `addListener(event, fn, context)` and `addListenerOnce(event, fn, context)` now accept an optional context, eliminating `.bind()` closure overhead and enabling proper `removeListener()` by original function reference |
12 | 18 | - EventEmitter: `event.on()` and `event.once()` no longer create `.bind()` closures when a context is provided |
13 | 19 |
|
14 | 20 | ### Fixed |
| 21 | +- Application: `Object.assign(defaultApplicationSettings, options)` mutated the shared defaults object in both `Application.init()` and `video.init()` — creating multiple Application instances would corrupt settings. Fixed with object spread. |
| 22 | +- Application: prevent white flash on load by setting a black background on the parent element when no background is defined |
15 | 23 | - WebGLRenderer: `setBlendMode()` now tracks the `premultipliedAlpha` flag — previously only the mode name was checked, causing incorrect GL blend function when mixing PMA and non-PMA textures with the same blend mode |
16 | 24 | - TMX: fix crash in `getObjects(false)` when a map contains an empty object group (Container.children lazily initialized) |
17 | 25 | - EventEmitter: `removeAllListeners()` now correctly clears once-listeners (previously only cleared regular listeners) |
18 | 26 | - Loader: fix undefined `crossOrigin` variable in script parser, unsafe regex match in video parser, missing error parameter in video/fontface error callbacks, `fetchData` Promise constructor antipattern and silent error swallowing |
19 | 27 |
|
20 | 28 | ### Chore |
| 29 | +- Converted `index.js` to `index.ts` — no internal modules import from the barrel anymore |
21 | 30 | - Minimum Node.js version is now 24.0.0 (Node 18/20 EOL, Node 22 in maintenance) |
22 | 31 | - CI: upgrade to Node.js 24 and pnpm/action-setup v5 |
23 | 32 | - TypeScript: 5.9 → 6.0 (added explicit `rootDir` to all tsconfig.build.json) |
|
0 commit comments