Updating change logs

This commit is contained in:
Richard Davey 2023-04-12 17:40:36 +01:00
parent de6e947432
commit a5da2f056d
11 changed files with 192 additions and 70 deletions

View file

@ -1,8 +1,58 @@
# Phaser 3 Change Logs
# Phaser 3 Change Logs
Due to the increasing size of our Change Logs we have now split them up, one version per folder.
You can find the exhaustive Change Logs for all versions of Phaser 3 here.
* [v3.60.0 Change Log](https://github.com/photonstorm/phaser/blob/master/CHANGELOG-v3.60.md) (the 3.60 specific change log, still in Beta)
* [v3.0.0 to v3.55.2. Change Logs](changelog/index.md)
Please select a version to read that specific change log:
We've organized the Change Logs into commonly themed sections to make it more digestible, but we appreciate there is a lot in there. Please don't feel overwhelmed! If you need clarification about something, join us on the Phaser Discord and feel free to ask.
| Version | Name | Release Date |
| ------- | ---- | ------------ |
| [3.60.0](changelog/3.60/CHANGELOG-v3.60.md) | Miku | 12th April 2023 |
| [3.55.2](changelog/3.55.2/CHANGELOG-v3.55.2.md) | Ichika | 27th May 2021 |
| [3.55.1](changelog/3.55.1/CHANGELOG-v3.55.1.md) | Ichika | 26th May 2021 |
| [3.55](changelog/3.55/CHANGELOG-v3.55.md) | Ichika | 24th May 2021 |
| [3.54](changelog/3.54/CHANGELOG-v3.54.md) | Futaro | 26th March 2021 |
| [3.53.1](changelog/3.53.1/CHANGELOG-v3.53.1.md) | Anastasia | 8th March 2021 |
| [3.53](changelog/3.53/CHANGELOG-v3.53.md) | Anastasia | 8th March 2021 |
| [3.52](changelog/3.52/CHANGELOG-v3.52.md) | Crusch | 14th January 2021 |
| [3.51](changelog/3.51/CHANGELOG-v3.51.md) | Emilia | 5th January 2021 |
| [3.50.1](changelog/3.50.1/CHANGELOG-v3.50.1.md) | Subaru | 21st December 2020 |
| [3.50](changelog/3.50/CHANGELOG-v3.50.md) | Subaru | 16th December 2020 |
| [3.24.1](changelog/3.24.1/CHANGELOG-v3.24.1.md) | Rem | 14th July 2020 |
| [3.24](changelog/3.24/CHANGELOG-v3.24.md) | Rem | 13th July 2020 |
| [3.23](changelog/3.23/CHANGELOG-v3.23.md) | Ginro | 27th April 2020 |
| [3.22](changelog/3.22/CHANGELOG-v3.22.md) | Kohaku | January 15th 2020 |
| [3.21](changelog/3.21/CHANGELOG-v3.21.md) | Senku | 22nd November 2019 |
| [3.20.1](changelog/3.20.1/CHANGELOG-v3.20.1.md) | Fitoria | 15th October 2019 |
| [3.20](changelog/3.20/CHANGELOG-v3.20.md) | Fitoria | 11th October 2019 |
| [3.19](changelog/3.19/CHANGELOG-v3.19.md) | Naofumi | 8th August 2019 |
| [3.18.1](changelog/3.18.1/CHANGELOG-v3.18.1.md) | Raphtalia | 20th June 2019 |
| [3.18](changelog/3.18/CHANGELOG-v3.18.md) | Raphtalia | 19th June 2019 |
| [3.17](changelog/3.17/CHANGELOG-v3.17.md) | Motoko | 10th May 2019 |
| [3.16.2](changelog/3.16.2/CHANGELOG-v3.16.2.md) | Ishikawa | 11th February 2019 |
| [3.16](changelog/3.16/CHANGELOG-v3.16.md) | Ishikawa | 5th February 2019 |
| [3.15.1](changelog/3.15.1/CHANGELOG-v3.15.1.md) | Batou | 16th October 2018 |
| [3.15](changelog/3.15/CHANGELOG-v3.15.md) | Batou | 16th October 2018 |
| [3.14](changelog/3.14/CHANGELOG-v3.14.md) | Tachikoma | 1st October 2018 |
| [3.13](changelog/3.13/CHANGELOG-v3.13.md) | Yuuki | 20th September 2018 |
| [3.12](changelog/3.12/CHANGELOG-v3.12.md) | Silica | 4th September 2018 |
| [3.11](changelog/3.11/CHANGELOG-v3.11.md) | Leafa | 13th July 2018 |
| [3.10.1](changelog/3.10.1/CHANGELOG-v3.10.1.md) | Hayashi | 13th June 2018 |
| [3.10](changelog/3.10/CHANGELOG-v3.10.md) | Hayashi | 13th June 2018 |
| [3.9](changelog/3.9/CHANGELOG-v3.9.md) | Yui | 24th May 2018 |
| [3.8](changelog/3.8/CHANGELOG-v3.8.md) | Klein | 16th May 2018 |
| [3.7.1](changelog/3.7.1/CHANGELOG-v3.7.1.md) | Sinon | 8th May 2018 |
| [3.7](changelog/3.7/CHANGELOG-v3.7.md) | Sinon | 4th May 2018 |
| [3.6](changelog/3.6/CHANGELOG-v3.6.md) | Asuna | 19th April 2018 |
| [3.5.1](changelog/3.5.1/CHANGELOG-v3.5.1.md) | Kirito | 17th April 2018 |
| [3.5](changelog/3.5/CHANGELOG-v3.5.md) | Kirito | 16th April 2018 |
| [3.4](changelog/3.4/CHANGELOG-v3.4.md) | Miyako | 12th April 2018 |
| [3.3](changelog/3.3/CHANGELOG-v3.3.md) | Tetsuo | 22nd March 2018 |
| [3.2.1](changelog/3.2.1/CHANGELOG-v3.2.1.md) | Kaori | 12th March 2018 |
| [3.2](changelog/3.2/CHANGELOG-v3.2.md) | Kaori | 5th March 2018 |
| [3.1.2](changelog/3.1.2/CHANGELOG-v3.1.2.md) | Onishi | 23rd February 2018 |
| [3.1.1](changelog/3.1.1/CHANGELOG-v3.1.1.md) | Onishi | 20th February 2018 |
| [3.1](changelog/3.1/CHANGELOG-v3.1.md) | Onishi | 16th February 2018 |
We've organized the Change Logs into commonly themed sections to make them more digestible, but we appreciate there is a lot of information.
Please don't feel overwhelmed! If you need clarification about something, join us on the Phaser Discord and feel free to ask.

24
changelog/3.60/Build.md Normal file
View file

@ -0,0 +1,24 @@
# Phaser 3.60.0 Change Log
Return to the [Change Log index](CHANGELOG-v3.60.md).
## Build and Webpack Config Updates
* Phaser 3 is now built with webpack 5 and all related packages have been updated.
* Lots of configuration objects now have full TypeScript definitions thanks to @16patsle
* The `path` package used by the TS Defs generator has been moved to `devDependencies` (thanks @antkhnvsk)
## Build and Webpack Config Updates Bug Fixes
* Several paths have been fixed in the `phaser-core.js` entry point (thanks @pavle-goloskokovic)
* Modified the way Phaser uses `require` statements in order to fix an issue in Google's closure-compiler when variables are re-assigned to new values (thanks @TJ09)
## Browser Specific Updates
* We've added a polyfill for the `requestVideoFrameCallback` API because not all current browsers support it, but the Video Game Object now relies upon it.
* IE9 Fix: Added 2 missing Typed Array polyfills (thanks @jcyuan)
* IE9 Fix: CanvasRenderer ignores frames with zero dimensions (thanks @jcyuan)
---------------------------------------
Return to the [Change Log index](CHANGELOG-v3.60.md).

View file

@ -23,7 +23,7 @@ These are the headliner new features in this release:
* New [Tween Manager](TweenManager.md) for better performance and memory management
* New [Dynamic Textures](DynamicTextures.md) for rendering to textures at runtime
* Vastly improved [WebGL Renderer](WebGLRenderer.md) mobile performance and other updates and pipeline changes
* New [TimeStep features](TimeStep.md) for enforcing fps rates and more
* New [TimeStep features and Timer Event Updates](Timestep.md) for enforcing fps rates and more
## System and Plugins
@ -34,8 +34,9 @@ Pick any of the following sections to see the breaking changes, new features, up
* [Bitmap and Geometry Masks](Masks.md)
* [Camera System](Camera.md)
* [Canvas Renderer](CanvasRenderer.md)
* [Colors and Display](Colors.md)
* [Game, Device and Game Config](Game.md)
* [Geometry](Geometry.md)
* [Geometry, Paths and Curves](Geometry.md)
* [Input System](Input.md)
* [Loader System](Loader.md)
* [Scale Manager](ScaleManager.md)
@ -43,19 +44,20 @@ Pick any of the following sections to see the breaking changes, new features, up
* [Sound System](Sound.md)
* [Spine 3 Plugin](Spine3.md)
* [Texture Manager](TextureManager.md)
* [Utils](Utils.md)
* [Utils, Math and Actions](Utils.md)
* [Build Config and Browser Updates](Build.md)
## Game Object Updates
Finally, here are the updates related to Game Objects:
* [Base Game Object](GameObject.md)
* [Bitmap Text Game Object](BitmapTextGameObject.md)
* [Container Game Object](Container.md)
* [Graphics Game Object](GraphicsGameObject.md)
* [Mesh Game Object, Vertices and Faces](Mesh.md)
* [Text Game Object](TextGameObject.md)
* [Tilemap Game Object](Tilemap.md)
* [All other Game Object related Updates](GameObject.md)
### Examples, Documentation, Beta Testing and TypeScript

28
changelog/3.60/Colors.md Normal file
View file

@ -0,0 +1,28 @@
# Phaser 3.60.0 Change Log
Return to the [Change Log index](CHANGELOG-v3.60.md).
## Color and Display Updates
* Calling the `ColorMatrix.set`, `reset` and `getData` methods all now use the built-in Float32 Array operations, making them considerably faster.
* `ColorMatrix._matrix` and `_data` are now Float32Arrays.
* `ColorMatrix.BLACK_WHITE` is a new constant used by blackwhite operations.
* `ColorMatrix.NEGATIVE` is a new constant used by negative operations.
* `ColorMatrix.DESATURATE_LUMINANCE` is a new constant used by desaturation operations.
* `ColorMatrix.SEPIA` is a new constant used by sepia operations.
* `ColorMatrix.LSD` is a new constant used by LSD operations.
* `ColorMatrix.BROWN` is a new constant used by brown operations.
* `ColorMatrix.VINTAGE` is a new constant used by vintage pinhole operations.
* `ColorMatrix.KODACHROME` is a new constant used by kodachrome operations.
* `ColorMatrix.TECHNICOLOR` is a new constant used by technicolor operations.
* `ColorMatrix.POLAROID` is a new constant used by polaroid operations.
* `ColorMatrix.SHIFT_BGR` is a new constant used by shift BGR operations.
## Color and Display Bug Fixes
* The method `Color.setFromHSV` would not change the members `h`, `s` and `v`, only the RGB properties. It now correctly updates them both. Fix #6276 (thanks @rexrainbow)
* `Display.RGB.equals` will now return the correct result. Previously, it would always return `false` (thanks @samme)
---------------------------------------
Return to the [Change Log index](CHANGELOG-v3.60.md).

View file

@ -24,6 +24,7 @@ ArtemSiz)
* When the device does not support WebGL, creating a game with the renderer type set to `Phaser.WEBGL` will now fail with an error. Previously, it would fall back to Canvas. Now it will not fall back to Canvas. If you require that feature, use the AUTO render type. Fix #5583 (thanks @samme)
* Including a `render` object within the Game Config will no longer erase any top-level config render settings. The `render` object will now take priority over the game config, but both will be used (thanks @vzhou842)
* Fixed issue in Game Config where having an empty object, such as `render: {}` would cause set properties to be overriden with the default value. Fix #6097 (thanks @michalfialadev)
* The `PluginManager.installScenePlugin` method will now check if the plugin is missing from the local keys array and add it back in, if it is (thanks @xiamidaxia)
---------------------------------------

View file

@ -2,16 +2,31 @@
Return to the [Change Log index](CHANGELOG-v3.60.md).
## Group and Layer New Features
## Group, Layer and Game Object New Features
* When using `Group.createMultiple` it will now skip the post-creations options if they are not set in the config object used, or a Game Object constructor. Previously, things like alpha, position, etc would be over-written by the defaults if they weren't given in the config, but now the method will check to see if they are set and only use them if they are. This is a breaking change, but makes it more efficient and flexible (thanks @samme)
* `GameObjects.Layer.addToDisplayList` and `removeFromDisplayList` are new methods that allows for you to now add a Layer as a child of another Layer. Fix #5799 (thanks @samme)
* `GameObjects.Polygon.setTo` is a new method that allows you to change the points being used to render a Polygon Shape Game Object. Fix #6151 (thanks @PhaserEditor2D)
## Game Object Updates
Updates that apply to the base Game Object class and all of its children.
* The `GameObject.getBounds` method will now return a `Geom.Rectangle` instance, rather than a plain Object (thanks @samme)
* The `GetBounds.getCenter` method now has an optional `includeParent` argument, which allows you to get the value in world space.
* The `Transform` Component has a new boolean read-only property `hasTransformComponent` which is set to `true` by default.
## DOM Element Game Object Updates
* The `DOMElement.preUpdate` method has been removed. If you overrode this method, please now see `preRender` instead.
* `DOMElement.preRender` is a new method that will check parent visibility and improve its behavior, responding to the parent even if the Scene is paused or the element is inactive. Dom Elements are also no longer added to the Scene Update List. Fix #5816 (thanks @prakol16 @samme)
## Light Game Object Updates
* The `Light` Game Object now has the `Origin` and `Transform` components, along with 4 new properties: `width`, `height`, `displayWidth` and `displayHeight`. This allows you to add a Light to a Container, or enable it for physics. Fix #6126 (thanks @jcoppage)
## Transform Matrix Updates
* `TransformMatrix.setQuad` is a new method that will perform the 8 calculations required to create the vertice positions from the matrix and the given values. The result is stored in the new `TransformMatrix.quad` Float32Array, which is also returned from this method.
* `TransformMatrix.multiply` now directly updates the Float32Array, leading to 6 less getter invocations.
## Game Object Bug Fixes
@ -24,6 +39,22 @@ Updates that apply to the base Game Object class and all of its children.
* Layers will now destroy more carefully when children destroy themselves (thanks @rexrainbow)
* The `DisplayList.addChildCallback` method will now check to see if the child has a parent container, and if it does, remove it from there before adding it to the Scene Display List. Fix #6091 (thanks @michalfialadev)
## Rope Game Object Bug Fixes
* If `Rope.setPoints` was called with the exact same number of points as before, it wouldn't set the `dirty` flag, meaning the vertices were not updated on the next render (thanks @stupot)
## Rectangle Game Object Bug Fixes
* During a call to `GameObject.Shapes.Rectangle.setSize` it will now correctly update the Rectangle object's display origin and default hitArea (thanks @rexrainbow)
## Path Follower Game Object Bug Fixes
* If you start a `PathFollower` with a `to` value it will now tween and complete at that value, rather than the end of the path as before (thanks @samme)
## Polygon Game Object Bug Fixes
* The `Polygon` Game Object would ignore its `closePath` property when rendering in Canvas. Fix #5983 (thanks @optimumsuave)
---------------------------------------
Return to the [Change Log index](CHANGELOG-v3.60.md).

View file

@ -11,9 +11,6 @@ The following are API-breaking, in that a new optional parameter has been insert
* The `Geom.Intersects.GetLineToPolygon` method has a new optional parameter `isRay`. If `true` it will treat the line parameter as a ray, if false, as a line segment (the default).
* `Geom.Intersects.GetRaysFromPointToPolygon` uses the new `isRay` parameter to enable this function to work fully again.
## Geometry New Features
## Geometry Updates
* `Geom.Intersects.LineToLine` will no longer create an internal `Point` object, as it's not required internally (thanks @Trissolo)
@ -22,6 +19,14 @@ The following are API-breaking, in that a new optional parameter has been insert
* Fixed issue in `Geom.Intersects.GetLineToLine` function that would fail with colinear lines (thanks @Skel0t)
## Curves New Features
* `Curves.Path.getCurveAt` is a new method that will return the curve that forms the path at the given location (thanks @natureofcode)
## Path Bug Fixes
* The `Path.fromJSON` function would use the wrong name for a Quadratic Bezier curve class, meaning it would be skipped in the exported JSON. It's now included correctly (thanks @natureofcode)
---------------------------------------
Return to the [Change Log index](CHANGELOG-v3.60.md).

View file

@ -2,7 +2,7 @@
Return to the [Change Log index](CHANGELOG-v3.60.md).
## TimeStep Updates
## TimeStep New Features
* You can now enforce an FPS rate on your game by setting the `fps: { limit: 30 }` value in your game config. In this case, it will set an fps rate of 30. This forces Phaser to not run the game step more than 30 times per second (or whatever value you set) and works for both Request Animation Frame and SetTimeOut.
* `TimeStep._limitRate` is a new internal private property allowing the Timestep to keep track of fps-limited steps.
@ -10,6 +10,9 @@ Return to the [Change Log index](CHANGELOG-v3.60.md).
* There is now a `TimeStep.step` method and `TimeStep.setLimitFPS` method. Which one is called depends on if you have fps limited your game, or not. This switch is made internally, automatically.
* `TimeStep.smoothDelta` is a new method that encapsulates the delta smoothing.
* `TimeStep.updateFPS` is a new method that calculates the moving frame rate average.
## TimeStep Updates
* `TimeStep.wake` will now automatically reset the fps limits and internal update counters.
* `TimeStep.destroy` will now call `RequestAnimationFrame.destroy`, properly cleaning it down.
* `RequestAnimationFrame.step` will now no longer call `requestAnimationFrame` if `isRunning` has been set to `false` (via the `stop` method)
@ -20,6 +23,21 @@ Return to the [Change Log index](CHANGELOG-v3.60.md).
* The `RequestAnimationFrame.target` property has been renamed to `delay` to better describe what it does.
* The TimeStep would always allocate 1 more entry than the `deltaSmoothingMax` value set in the game config. This is now clamped correctly (thanks @vzhou842)
## TimeStep Bug Fixes
* When forcing a game to use `setTimeout` and then sending the game to sleep, it would accidentally restart by using Request Animation Frame instead (thanks @andymikulski)
## Clock and Timer Event Updates
* The default callback context of the `TimerEvent` has changed to be the `TimerEvent` instance itself, rather than the context (thanks @samme)
* `Time.Clock.startTime` is a new property that stores the time the Clock (and therefore the Scene) was started. This can be useful for comparing against the current time to see how much real world time has elapsed (thanks @samme)
## Clock and Timer Event Bug Fixes
* If you create a repeating or looping `TimerEvent` with a `delay` of zero it will now throw a runtime error as it would lead to an infinite loop. Fix #6225 (thanks @JernejHabjan)
* Timers with very short delays (i.e. 1ms) would only run the callback at the speed of the frame update. It will now try and match the timer rate by iterating the calls per frame. Fix #5863 (thanks @rexrainbow)
* Calling `TimerEvent.reset` in the Timer callback would cause the timer to be added to the Clock's pending removal and insertion lists together, throwing an error. It will now not add to pending removal if the timer was reset. Fix #5887 (thanks @rexrainbow)
---------------------------------------
Return to the [Change Log index](CHANGELOG-v3.60.md).

View file

@ -11,6 +11,11 @@ Return to the [Change Log index](CHANGELOG-v3.60.md).
* `ProcessQueue.add` will no longer place the item into the pending list if it's already active or pending.
* `ProcessQueue.remove` will check if the item is in the pending list, and simply remove it, rather than destroying it.
## Math New Features
* `Math.LinearXY` is a new function that will interpolate between 2 given Vector2s and return a new Vector2 as a result (thanks @GregDevProjects)
* `Vector2.project` is a new method that will project the vector onto the given vector (thanks @samme)
## Utils Updates
* Previously, an Array Matrix would enforce it had more than 2 rows. This restriction has been removed, allowing you to define and rotate single-row array matrices (thanks @andriibarvynko)
@ -21,6 +26,11 @@ Return to the [Change Log index](CHANGELOG-v3.60.md).
* The `Utils.Array.SafeRange` function would exclude valid certain ranges. Fix #5979 (thanks @ksritharan)
* Fixed issue in `Utils.Objects.GetValue` where it would return an incorrect result if a `source` and `altSource` were provided that didn't match in structure. Fix #5952 (thanks @rexrainbow)
## Actions Bug Fixes
* The `tempZone` used by `GridAlign` has now had `setOrigin(0, 0)` applied to it. This leads to more accurate / expected zone placement when aligning grid items.
* The `Actions.Spread` method will now place the final item correctly and abort early if the array only contains 1 or 0 items (thanks @EmilSV)
---------------------------------------
Return to the [Change Log index](CHANGELOG-v3.60.md).

View file

@ -95,6 +95,7 @@ In order to add clarity in the codebase we have created a new `PostPipeline` Com
* The `Renderer.Snapshot.WebGL` function has had its first parameter changed from an `HTMLCanvasElement` to a `WebGLRenderingContext`. This is now passed in from the `snapshot` methods inside the WebGL Renderer. The change was made to allow it to work with WebGL2 custom contexts (thanks @andymikulski)
* `WebGLSnapshot` will now flip the pixels in the created Image element if the source was a framebuffer. This means grabbing a snapshot from a Dynamic or Render Texture will now correctly invert the pixels on the y axis for an Image. Grabbing from the game renderer will skip this.
* `WebGLRenderer.snapshotFramebuffer` and by extension, the snapshot methods in Dynamic Textures and Render Textures, has been updated to ensure that the width and height never exceed the framebuffer dimensions, or it'll cause a runtime error. The method `snapshotArea` has had this limitation removed as a result, allowing you to snapshot areas that are larger than the Canvas. Fix #5707 (thanks @teng-z)
* `WebGLSnapshot` and `CanvasSnapshot` will now Math.floor the width/height values to ensure no sub-pixel dimensions, which corrupts the resulting texture. Fix #6099 (thanks @orjandh)
## Context Loss Handling Updates
@ -102,6 +103,12 @@ In order to add clarity in the codebase we have created a new `PostPipeline` Com
* The `Text` and `TileSprite` Game Objects no longer listen for the `CONTEXT_RESTORED` event and have had their `onContextRestored` methods removed.
* The context restore event handler is now turned off when a Game Object is destroyed. This helps avoid memory leakage from Text and TileSprite Game Objects, especially if you consistently destroy and recreate your Game instance in a single-page app (thanks @rollinsafary-inomma @rexrainbow @samme)
## WebGL Shader New Features
* `WebGLShader.fragSrc` is a new property that holds the source of the fragment shader.
* `WebGLShader.vertSrc` is a new property that holds the source of the vertex shader.
* `WebGLShader#.createProgram` is a new method that will destroy and then re-create the shader program based on the given (or stored) vertex and fragment shader source.
* `WebGLShader.setBoolean` is a new method that allows you to set a boolean uniform on a shader.
---------------------------------------

View file

@ -1,54 +0,0 @@
# Phaser 3 Change Logs
You can find the exhaustive Change Logs for all versions of Phaser 3 here.
Please select a version to read that specific change log:
| Version | Name | Release Date |
| ------- | ---- | ------------ |
| [3.60.0](3.60/CHANGELOG-v3.60.md) | Miku | 12th April 2023 |
| [3.55.2](3.55.2/CHANGELOG-v3.55.2.md) | Ichika | 27th May 2021 |
| [3.55.1](3.55.1/CHANGELOG-v3.55.1.md) | Ichika | 26th May 2021 |
| [3.55](3.55/CHANGELOG-v3.55.md) | Ichika | 24th May 2021 |
| [3.54](3.54/CHANGELOG-v3.54.md) | Futaro | 26th March 2021 |
| [3.53.1](3.53.1/CHANGELOG-v3.53.1.md) | Anastasia | 8th March 2021 |
| [3.53](3.53/CHANGELOG-v3.53.md) | Anastasia | 8th March 2021 |
| [3.52](3.52/CHANGELOG-v3.52.md) | Crusch | 14th January 2021 |
| [3.51](3.51/CHANGELOG-v3.51.md) | Emilia | 5th January 2021 |
| [3.50.1](3.50.1/CHANGELOG-v3.50.1.md) | Subaru | 21st December 2020 |
| [3.50](3.50/CHANGELOG-v3.50.md) | Subaru | 16th December 2020 |
| [3.24.1](3.24.1/CHANGELOG-v3.24.1.md) | Rem | 14th July 2020 |
| [3.24](3.24/CHANGELOG-v3.24.md) | Rem | 13th July 2020 |
| [3.23](3.23/CHANGELOG-v3.23.md) | Ginro | 27th April 2020 |
| [3.22](3.22/CHANGELOG-v3.22.md) | Kohaku | January 15th 2020 |
| [3.21](3.21/CHANGELOG-v3.21.md) | Senku | 22nd November 2019 |
| [3.20.1](3.20.1/CHANGELOG-v3.20.1.md) | Fitoria | 15th October 2019 |
| [3.20](3.20/CHANGELOG-v3.20.md) | Fitoria | 11th October 2019 |
| [3.19](3.19/CHANGELOG-v3.19.md) | Naofumi | 8th August 2019 |
| [3.18.1](3.18.1/CHANGELOG-v3.18.1.md) | Raphtalia | 20th June 2019 |
| [3.18](3.18/CHANGELOG-v3.18.md) | Raphtalia | 19th June 2019 |
| [3.17](3.17/CHANGELOG-v3.17.md) | Motoko | 10th May 2019 |
| [3.16.2](3.16.2/CHANGELOG-v3.16.2.md) | Ishikawa | 11th February 2019 |
| [3.16](3.16/CHANGELOG-v3.16.md) | Ishikawa | 5th February 2019 |
| [3.15.1](3.15.1/CHANGELOG-v3.15.1.md) | Batou | 16th October 2018 |
| [3.15](3.15/CHANGELOG-v3.15.md) | Batou | 16th October 2018 |
| [3.14](3.14/CHANGELOG-v3.14.md) | Tachikoma | 1st October 2018 |
| [3.13](3.13/CHANGELOG-v3.13.md) | Yuuki | 20th September 2018 |
| [3.12](3.12/CHANGELOG-v3.12.md) | Silica | 4th September 2018 |
| [3.11](3.11/CHANGELOG-v3.11.md) | Leafa | 13th July 2018 |
| [3.10.1](3.10.1/CHANGELOG-v3.10.1.md) | Hayashi | 13th June 2018 |
| [3.10](3.10/CHANGELOG-v3.10.md) | Hayashi | 13th June 2018 |
| [3.9](3.9/CHANGELOG-v3.9.md) | Yui | 24th May 2018 |
| [3.8](3.8/CHANGELOG-v3.8.md) | Klein | 16th May 2018 |
| [3.7.1](3.7.1/CHANGELOG-v3.7.1.md) | Sinon | 8th May 2018 |
| [3.7](3.7/CHANGELOG-v3.7.md) | Sinon | 4th May 2018 |
| [3.6](3.6/CHANGELOG-v3.6.md) | Asuna | 19th April 2018 |
| [3.5.1](3.5.1/CHANGELOG-v3.5.1.md) | Kirito | 17th April 2018 |
| [3.5](3.5/CHANGELOG-v3.5.md) | Kirito | 16th April 2018 |
| [3.4](3.4/CHANGELOG-v3.4.md) | Miyako | 12th April 2018 |
| [3.3](3.3/CHANGELOG-v3.3.md) | Tetsuo | 22nd March 2018 |
| [3.2.1](3.2.1/CHANGELOG-v3.2.1.md) | Kaori | 12th March 2018 |
| [3.2](3.2/CHANGELOG-v3.2.md) | Kaori | 5th March 2018 |
| [3.1.2](3.1.2/CHANGELOG-v3.1.2.md) | Onishi | 23rd February 2018 |
| [3.1.1](3.1.1/CHANGELOG-v3.1.1.md) | Onishi | 20th February 2018 |
| [3.1](3.1/CHANGELOG-v3.1.md) | Onishi | 16th February 2018 |