Skip to content

Instantly share code, notes, and snippets.

@Calinou
Last active September 16, 2025 07:42
Show Gist options
  • Select an option

  • Save Calinou/49aefe52ce8f67ffa3f743932123d14f to your computer and use it in GitHub Desktop.

Select an option

Save Calinou/49aefe52ce8f67ffa3f743932123d14f to your computer and use it in GitHub Desktop.

Revisions

  1. Calinou revised this gist Nov 21, 2021. No changes.
  2. Calinou revised this gist Nov 21, 2021. 1 changed file with 2 additions and 4 deletions.
    6 changes: 2 additions & 4 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -39,8 +39,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - New `Transform2D.looking_at()` function.
    - [New and improved IK in Skeleton3D](https://github.com/godotengine/godot/pull/39353).
    - New classes: SkeletonModifier3D, SkeletonModifierStack3D, SkeletonModifier3DLookAt, SkeletonModification3DCCDIK, SkeletonModification3DFABRIK, SkeletonModification3DJiggle, SkeletonModification3DTwoBoneIK, SkeletonModification3DStackHolder.
    - The Bone struct now includes a local_pose_override.
    - The Bone struct now keeps track of its children bones, if it has any.
    - The Bone struct now includes a local_pose_override.
    - The Bone struct now keeps track of its children bones, if it has any.
    - Added functions to Skeleton3D for getting the forward vector using the information stored in the rest pose for the bones.
    - New `Basis.rotate_to_align()` function.
    - Refactored the BoneAttachment3D node.
    @@ -139,7 +139,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Networking

    - [Support for DTLS encryption in UDP and ENet.](https://godotengine.org/article/enet-dtls-encryption)
    - Support for multiple address resolution in DNS requests (like in Godot 2.1).

    #### Porting

    @@ -412,7 +411,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    #### Core

    - Fixed UV mapping on CSGSphere.
    - The positional command line argument now considers `.res` and `.tres` files as runnable scene formats.
    - This fixes Godot not running the main scene or a custom scene if they were saved with a `.res` or `.tres` extension.
    - **macOS/Linux:** Fix the result of `Directory.get_space_left()`.
  3. Calinou revised this gist Nov 20, 2021. 1 changed file with 0 additions and 6 deletions.
    6 changes: 0 additions & 6 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -21,12 +21,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Easier animation reuse across different models.
    - Easier procedural generation of animations.

    #### Buildsystem

    - New `custom_modules` option to compile external user-provided C++ modules.
    - The path should *contain* one or more C++ modules, but scanning isn't recursive beyond that level.
    - Example: `scons custom_modules="../project/modules"`

    #### Core

    - New TileMap and TileSet resources.
  4. Calinou revised this gist Nov 20, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased]
    ## [4.0] - TBD

    ### Added

  5. Calinou revised this gist Nov 20, 2021. 1 changed file with 12 additions and 1 deletion.
    13 changes: 12 additions & 1 deletion CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,12 +4,23 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev, commits between `759fef5401f7898a12cb5efcc50f7ed572e3a3ed` [2020-07-04] and `446460eaf99a34f3a6fd082fb290bf437e877aa9` [2021-05-08] not included)
    ## [Unreleased]

    ### Added

    #### Animation

    - [Revamped 3D animation storage.](https://godotengine.org/article/animation-data-redesign-40)
    - [New blend shape track to adjust blend shapes in animations more efficiently.](https://github.com/godotengine/godot/pull/53865)
    - [New expression-based transitions in AnimationTree state machines.](https://github.com/godotengine/godot/pull/54327)
    - [Support for animation compression to improve performance with long animations such as cutscenes.](https://github.com/godotengine/godot/pull/54050)
    - [Replaced transform tracks by position, rotation and scale tracks.](https://github.com/godotengine/godot/pull/53689)
    - [Removed the animation dependency on bone rests.](https://github.com/godotengine/godot/pull/53765)
    - Better compatibility with models that use non-uniform scaling in animations.
    - Better compatibility with models exported from Maya and 3DS Max.
    - Easier animation reuse across different models.
    - Easier procedural generation of animations.

    #### Buildsystem

    - New `custom_modules` option to compile external user-provided C++ modules.
  6. Calinou revised this gist Nov 20, 2021. 1 changed file with 0 additions and 4 deletions.
    4 changes: 0 additions & 4 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -313,10 +313,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Renamed the script editor's "Adaptive" syntax theme to "Default" and "Default" to "Godot 2", for consistency with the editor theme presets.
    - Flipped the 2D editor icon to match Godot's coordinate handedness.

    #### Export

    - **UWP:** Renamed the "Windows Universal" export platform name to "UWP".

    #### GUI

    - Improved drive letter handling in EditorFileDialog and FileDialog.
  7. Calinou revised this gist Nov 20, 2021. 1 changed file with 39 additions and 7 deletions.
    46 changes: 39 additions & 7 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -156,7 +156,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Rendering

    - New Vulkan renderer.
    - Implemented shader caching to avoid freezes during gameplay.
    - [New OpenGL renderer, using OpenGL 3.3/OpenGL ES 3.0/WebGL 2.0 as a baseline.](https://github.com/godotengine/godot/pull/53150)
    - Designed to target mobile/web platforms first, but also usable on desktop platforms.
    - Uses a low-end-friendly approach to maximize performance in simple scenes.
    - Currently supports 2D rendering only.
    - OpenGL 3D rendering is planned for a future 4.x release.
    - Support for specular mapping when using 2D lighting.
    - [New DirectionalLight2D node for 2D lighting.](https://github.com/godotengine/godot/pull/43297)
    - CanvasGroup node to modulate several 2D nodes as a group (or apply shaders to them).
    @@ -169,19 +173,39 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Shadow mapping with improved filtering and PCSS-like penumbra simulation.
    - Shadow normal offset bias is now implemented to avoid issues with shadow acne or peter-panning.
    - [New Decal node to project textures onto 3D surfaces.](https://github.com/godotengine/godot/pull/37861)
    - New fully real-time VoxelGI (ex-GIProbe).
    - New fully real-time VoxelGI (formerly GIProbe).
    - Dynamic lights and emissive can emit GI that's updated every frame (instead of only updating sporadically).
    - Dynamic objects can receive GI and contribute to it.
    - [Volumetric fog](https://github.com/godotengine/godot/pull/41213) with optional GI contribution.
    - Exponential fog to replace the old distance-based fog.
    - [New signed distance field-based global illumination](https://godotengine.org/article/godot-40-gets-sdf-based-real-time-global-illumination) (SDFGI) for open world lighting.
    - Enabled in the WorldEnvironment. No node required, no baking.
    - Semi-realtime: dynamic objects can receive GI, but not contribute to it.
    - [New GPU-based lightmapper](https://godotengine.org/article/godot-40-will-get-new-modernized-lightmapper) with built-in denoising.
    - Improved support for dynamic objects with better performance and quality.
    - Generated UV2s are now cached across reimports.
    - [Volumetric fog](https://github.com/godotengine/godot/pull/41213) with optional GI contribution.
    - [Fog volumes to locally apply volumetric fog (or subtract to global fog using negative density).](https://github.com/godotengine/godot/pull/53353)
    - More physically accurate exponential fog to replace the old distance-based fog.
    - New Aerial Scattering property in distance-based fog to fade out to the background sky instead of a fixed color.
    - Also available in volumetric fog with the Ambient Inject property.
    - [New GPU-based lightmapper.](https://godotengine.org/article/godot-40-will-get-new-modernized-lightmapper)
    - When using a dedicated GPU, this results in much faster bake speeds compared to the CPU lightmapper.
    - Optional support for storing directional lighting information and rough reflections using spherical harmonics.
    - Improved support for lighting dynamic objects with better performance and quality.
    - In addition to automatic generation, LightmapProbe nodes can now be placed manually to provide better lighting information for dynamic objects where needed.
    - [Physical sky material and custom sky shaders](https://godotengine.org/article/custom-sky-shaders-godot-4-0), both supporting real-time updates.
    - [Global and per-instance shader uniforms.](https://godotengine.org/article/godot-40-gets-global-and-instance-shader-uniforms)
    - This can be used to better reuse shaders, leading to improved performance.
    - Support for automatically generating and using mesh LODs to improve performance.
    - Several LOD levels are generated for imported 3D scenes by default.
    - LODs are automatically used for mesh rendering using a pixel coverage-based selection algorithm.
    - Uses the [meshoptimizer](https://github.com/zeux/meshoptimizer) library.
    - Support for LOD visibility ranges in GeometryInstance3D.
    - Manually authored LODs can be configured using distance and hysteresis cutoffs.
    - Can be used for <abbr title="Hierarchical Level of Detail">HLOD</abbr> setups to reduce draw calls while preserving culling opportunities when up close.
    - [Support for GeometryInstance3D distance fade to make distant meshes disappear smoothly without having to modify their material.](https://github.com/godotengine/godot/pull/54222)
    - Support for automatically generating and using shadow meshes to improve performance.
    - The generated shadow meshes are welded aggressively to improve performance with no difference in visual quality.
    - To further improve performance, hand-made shadow meshes can be specified in the inspector in MeshInstance nodes.
    - [Support for rendering a viewport's 3D contents at a lower resolution to improve performance](https://github.com/godotengine/godot/pull/51870).
    - 2D elements remain at full resolution to improve perceived sharpness.
    - A scaling factor above 1.0 can be used for supersampling, which is useful to maximize quality for offline rendering.
    - See individual progress reports for more information:
    [#1](https://godotengine.org/article/vulkan-progress-report-1),
    [#2](https://godotengine.org/article/vulkan-progress-report-2),
    @@ -228,6 +252,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Tweaked the output strings to be more human-readable when printing various built-in Variant and Object types.
    - Renamed File's `endian_swap` property to `big_endian` for consistency with ResourceSaver and StreamPeer.
    - [Renamed File's `get_len()` method to `get_length()`.](https://github.com/godotengine/godot/pull/49061)
    - [Renamed Object's `PROPERTY_USAGE_NOEDITOR` to `PROPERTY_USAGE_NO_EDITOR`.](https://github.com/godotengine/godot/pull/54571)
    - Renamed `Vector2.clamped()` to `Vector2.limit_length()` to differentiate it from the new `Vector2.clamp()`.
    - Renamed `rand_range()` to `randf_range()` to avoid ambiguity with the new `randi_range()` and make its return type more obvious.
    - Replaced `Node.add_child_below_node()` with `Node.add_sibling()`.
    @@ -375,6 +400,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    - Removed the deprecated PhysicsBody `friction` and `bounce` properties (replaced by PhysicsMaterial).

    #### Rendering

    - Removed OpenGL ES 2.0 renderer (replaced by the new mobile-oriented OpenGL 3 renderer).
    - Vulkan, OpenGL 3.3, OpenGL ES 3.0 or WebGL 2.0 support is now required to run Godot.
    - [Removed support for 16× MSAA due to driver bugs and low performance.](https://github.com/godotengine/godot/pull/49063)
    - For high-quality offline rendering, using supersampling together with 8× MSAA is a better option anyway.

    ### Fixed

    #### Core
  8. Calinou revised this gist Nov 19, 2021. 1 changed file with 13 additions and 0 deletions.
    13 changes: 13 additions & 0 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -193,6 +193,19 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    #### Shaders

    - New shader compiler rewritten from scratch.
    - [Support for uniform arrays (including sampler arrays).](https://github.com/godotengine/godot/pull/49485)
    - [Arrays can now be passed as function parameters (including arrays of structs).](https://github.com/godotengine/godot/pull/48933)
    - [The return type of a function can now be an array (including arrays of structs).](https://github.com/godotengine/godot/pull/48933)
    - [Array size can now be optionally written before the identifier (`int[2] array;` instead of `int array[2]`).](https://github.com/godotengine/godot/pull/53527)
    - This eases porting shaders from GLSL.
    - [Array constructors can now be called at any time after initialization.](https://github.com/godotengine/godot/pull/44705)
    - For example, `int array[3]; array = {1, 2, 3}` is now valid.
    - [New `fma()` (fused multiply-add) built-in function to optimize shaders in a low-level way.](https://github.com/godotengine/godot/pull/36225)
    - [New built-in data (un)packing functions to optimize shaders in a low-level way.](https://github.com/godotengine/godot/pull/53066)
    - Warning system for common issues such as floating-point comparison and unused variables.
    - Argument names now appear in code completion tooltips.
    - More information in the [progress report](https://godotengine.org/article/improvements-shaders-visual-shaders-godot-4).
    - [Add Billboard mode to visual shaders.](https://github.com/godotengine/godot/pull/49157)
    - [The constants `PI`, `TAU` and `E` are now available in the shader language.](https://github.com/godotengine/godot/pull/48837)

  9. Calinou revised this gist Nov 19, 2021. 1 changed file with 8 additions and 1 deletion.
    9 changes: 8 additions & 1 deletion CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -40,11 +40,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - New `Basis.rotate_to_align()` function.
    - Refactored the BoneAttachment3D node.
    - Removed the `process_list` functions.
    - [New GradientTexture2D resource (useful for 2D lights, particles, …)](https://github.com/godotengine/godot/pull/53234).
    - [Support for gettext PO template generation from scene and script files.](https://github.com/godotengine/godot/pull/39415)
    - Translation parser plugins can be written to allow extracting strings from custom file types.
    - [New Time singleton to replace date/time handling methods in the OS singleton.](https://github.com/godotengine/godot/pull/49123)
    - Includes new methods to handle ISO 8601 timestamp conversion.
    - [Support for custom performance monitors](https://github.com/godotengine/godot/pull/39302).
    - New `randi_range()` global scope function to return a random *integer* number within a range.
    - New `randfn()` global scope function to return a floating-point number along a normal gaussian distribution.
    - [New `pingpong()` global scope function to return a floating-point number that increments then decrements in a "sawtooth" fashion.](https://github.com/godotengine/godot/pull/46346)
    - Vectors and Colors can now be clamped between two values their respective `clamp()` methods.
    - New `Vector3.limit_length()` method as a Vector3 counterpart to `Vector2.limit_length()` (formerly `Vector2.clamped()`).
    - New PackedArrays to replace PoolArrays.
    @@ -212,6 +216,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Renamed File's `endian_swap` property to `big_endian` for consistency with ResourceSaver and StreamPeer.
    - [Renamed File's `get_len()` method to `get_length()`.](https://github.com/godotengine/godot/pull/49061)
    - Renamed `Vector2.clamped()` to `Vector2.limit_length()` to differentiate it from the new `Vector2.clamp()`.
    - Renamed `rand_range()` to `randf_range()` to avoid ambiguity with the new `randi_range()` and make its return type more obvious.
    - Replaced `Node.add_child_below_node()` with `Node.add_sibling()`.
    - Replaced `Directory.list_dir_begin()`'s `skip_navigational` and `skip_hidden` arguments with `show_navigational` and `show_hidden`.
    - Both arguments are `false` by default, which means the default behavior is now to exclude both navigational and hidden files from the returned list.
    @@ -231,7 +236,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - VisibilityNotifier3D -> VisibleOnScreenNotifier3D
    - VisibilityEnabler2D -> VisibleOnScreenEnabler2D
    - VisibilityEnabler3D -> VisibleOnScreenEnabler3D
    - Old node names are automatically converted when loading scenes from Godot 3.x.
    - Renamed various resources:
    - GradientTexture -> GradientTexture1D
    - Old node and resource names are automatically converted when loading scenes from Godot 3.x.

    #### Editor

  10. Calinou revised this gist Nov 18, 2021. 1 changed file with 11 additions and 4 deletions.
    15 changes: 11 additions & 4 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -84,10 +84,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### GDScript

    - GDScript was rewritten from scratch with a cleaner approach.
    - See individual progress reports for more information:
    [#1](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer),
    [#2](https://godotengine.org/article/gdscript-progress-report-writing-new-parser),
    [#3](https://godotengine.org/article/gdscript-progress-report-type-checking-back).
    - Annotations to replace keywords in certain cases (`@export`, `@onready`, `@rpc()`, `@tool`, `@warning_ignore()`, …).
    - Typed arrays (`var array_of_nodes: Array[Node]`). Any type can be used, including custom classes.
    - See individual progress reports for more information:
    [#1](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer),
    [#2](https://godotengine.org/article/gdscript-progress-report-writing-new-parser),
    [#3](https://godotengine.org/article/gdscript-progress-report-type-checking-back).
    - [New documentation generation system](https://github.com/godotengine/godot/pull/41095).
    - Comments starting with `##` are considered documentation comments.
    - Documentation comments be placed before any member variable, constant, enum or function declaration, or at the top of a file.
    - Documentation comments appear in the editor help and when hovering exported properties in the inspector.

    #### GUI

    @@ -189,6 +195,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Miscellaneous

    - The engine is now unit-tested using [doctest](https://github.com/onqtam/doctest).
    - [GDScript also now has integration tests.](https://docs.godotengine.org/en/latest/development/cpp/unit_testing.html#integration-tests-for-gdscript)
    - Switched from Travis CI and AppVeyor to GitHub Actions.
    - A Fish shell completion file is now available for the Godot editor's command line interface.

  11. Calinou revised this gist Nov 18, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev, commits between `759fef5401f7898a12cb5efcc50f7ed572e3a3ed` [2020-07-04] and `446460eaf99a34f3a6fd082fb290bf437e877aa9` not included)
    ## [Unreleased] (4.0-dev, commits between `759fef5401f7898a12cb5efcc50f7ed572e3a3ed` [2020-07-04] and `446460eaf99a34f3a6fd082fb290bf437e877aa9` [2021-05-08] not included)

    ### Added

  12. Calinou revised this gist Nov 18, 2021. 1 changed file with 12 additions and 4 deletions.
    16 changes: 12 additions & 4 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev, commits between `5f7499beaccc814080001265b902949ea475adfa` and `446460eaf99a34f3a6fd082fb290bf437e877aa9` not included)
    ## [Unreleased] (4.0-dev, commits between `759fef5401f7898a12cb5efcc50f7ed572e3a3ed` [2020-07-04] and `446460eaf99a34f3a6fd082fb290bf437e877aa9` not included)

    ### Added

    @@ -38,10 +38,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The Bone struct now keeps track of its children bones, if it has any.
    - Added functions to Skeleton3D for getting the forward vector using the information stored in the rest pose for the bones.
    - New `Basis.rotate_to_align()` function.
    - Refactored the BoneAttachment3D node.
    - Removed the` process_list` functions.
    - Refactored the BoneAttachment3D node.
    - Removed the `process_list` functions.
    - [Support for gettext PO template generation from scene and script files.](https://github.com/godotengine/godot/pull/39415)
    - Translation parser plugins can be written to allow extracting strings from custom file types.
    - [New Time singleton to replace date/time handling methods in the OS singleton.](https://github.com/godotengine/godot/pull/49123)
    - Includes new methods to handle ISO 8601 timestamp conversion.
    - [Support for custom performance monitors](https://github.com/godotengine/godot/pull/39302).
    - Vectors and Colors can now be clamped between two values their respective `clamp()` methods.
    - New `Vector3.limit_length()` method as a Vector3 counterpart to `Vector2.limit_length()` (formerly `Vector2.clamped()`).
    - New PackedArrays to replace PoolArrays.
    @@ -89,6 +92,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### GUI

    - Support for multiple windows on desktop platforms. Projects can spawn additional windows, each with their own viewport.
    - Added `NOTIFICATION_APPLICATION_FOCUS_IN` and `NOTIFICATION_APPLICATION_FOCUS_OUT` notifications for "global" project focus changes (separate from `NOTIFICATION_WM_FOCUS_IN` and `NOTIFICATION_WM_FOCUS_OUT`).
    - RichTextLabel property `fit_content_height` to make the label's height fit its content automatically (not always reliable).
    - RichTextLabel's `img` tag now supports an optional `color` attribute to modulate the image.
    - `get_char_size()` is now exposed in Font, making it usable in DynamicFont rather than being limited to BitmapFont.
    @@ -281,11 +285,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Physics

    - Split KinematicBody into the new CharacterBody node and PhysicsBody.
    - Renamed PlaneShape to WorldMarginShape.
    - RayCast nodes are now enabled by default.
    - The `disabled` property was renamed to `enabled` with its behavior inverted.
    - Renamed PlaneShape to WorldBoundaryShape.

    #### Rendering

    - Some Environment settings such as depth of field have been moved to a CameraEffects resource which is assigned to individual Camera nodes.
    - [The ACES Fitted tonemapping algoirthm is now used in place of the old ACES algorithm.](https://github.com/godotengine/godot/pull/52476)
    - The old non-fitted ACES tonemapping algorithm was removed.
    - Quality settings have been moved from individual nodes and resources to the Project Settings for better centralization.
    - Quality settings now have performance hints in their values' names, such as "Fast" or "Slow".

  13. Calinou revised this gist Nov 18, 2021. 1 changed file with 10 additions and 1 deletion.
    11 changes: 10 additions & 1 deletion CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev, commits between `af3f9a854edef78e751d4fb68df854b1c0cc24c6` and `446460eaf99a34f3a6fd082fb290bf437e877aa9` not included)
    ## [Unreleased] (4.0-dev, commits between `5f7499beaccc814080001265b902949ea475adfa` and `446460eaf99a34f3a6fd082fb290bf437e877aa9` not included)

    ### Added

    @@ -257,6 +257,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Renamed the script editor's "Adaptive" syntax theme to "Default" and "Default" to "Godot 2", for consistency with the editor theme presets.
    - Flipped the 2D editor icon to match Godot's coordinate handedness.

    #### Export

    - **UWP:** Renamed the "Windows Universal" export platform name to "UWP".

    #### GUI

    - Improved drive letter handling in EditorFileDialog and FileDialog.
    @@ -314,6 +318,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    - Removed the **Dim Dialog on Editor Popup** editor setting since it was made obsolete by the multi-window paradigm.

    #### GUI

    - [Removed the ToolButton node in favor of Button.](https://github.com/godotengine/godot/pull/39690)
    - Existing ToolButton nodes from Godot 3.x projects will be converted to Button nodes.

    #### Input

    - Removed the `DisplayServer.get_latin_keyboard_variant()` method (replaced by the more flexible `DisplayServer.keyboard_get_current_layout()`).
  14. Calinou revised this gist Nov 18, 2021. 1 changed file with 11 additions and 0 deletions.
    11 changes: 11 additions & 0 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -29,6 +29,17 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Easier chaining of tweens.
    - Low-level tweening option to get an interpolated value directly.
    - *Existing projects will have to be modified to account for this, as automatic conversion isn't feasible.*
    - [New and improved IK in Skeleton2D](https://github.com/godotengine/godot/pull/40347).
    - New classes: SkeletonModifier2D, SkeletonModifierStack2D, SkeletonModification2DLookAt, SkeletonModification2DCCDIK, SkeletonModification2DFABRIK, SkeletonModification2DJiggle, SkeletonModification2DTwoBoneIK, PhysicalBone2D, SkeletonModification2DPhysicalBones, SkeletonModification2DStackHolder.
    - New `Transform2D.looking_at()` function.
    - [New and improved IK in Skeleton3D](https://github.com/godotengine/godot/pull/39353).
    - New classes: SkeletonModifier3D, SkeletonModifierStack3D, SkeletonModifier3DLookAt, SkeletonModification3DCCDIK, SkeletonModification3DFABRIK, SkeletonModification3DJiggle, SkeletonModification3DTwoBoneIK, SkeletonModification3DStackHolder.
    - The Bone struct now includes a local_pose_override.
    - The Bone struct now keeps track of its children bones, if it has any.
    - Added functions to Skeleton3D for getting the forward vector using the information stored in the rest pose for the bones.
    - New `Basis.rotate_to_align()` function.
    - Refactored the BoneAttachment3D node.
    - Removed the` process_list` functions.
    - [New Time singleton to replace date/time handling methods in the OS singleton.](https://github.com/godotengine/godot/pull/49123)
    - Includes new methods to handle ISO 8601 timestamp conversion.
    - Vectors and Colors can now be clamped between two values their respective `clamp()` methods.
  15. Calinou revised this gist Nov 18, 2021. 1 changed file with 16 additions and 7 deletions.
    23 changes: 16 additions & 7 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -8,31 +8,40 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ### Added

    #### Animation

    #### Buildsystem

    - New `custom_modules` option to compile external user-provided C++ modules.
    - The path should *contain* one or more C++ modules, but scanning isn't recursive beyond that level.
    - Example: `scons custom_modules="../project/modules"`

    #### Core

    - New TileMap and TileSet resources.
    - New Vector2i, Vector3i and Rect2i types.
    - These are integer variants of Vector2, Vector3 and Rect2.
    - Callable type for first-class functions (can be created with lambdas in GDScript).
    - The Euler rotation order can now be adjusted in Node3D.
    - [New `Array.map()`, `Array.filter()` and `Array.reduce()` methods that can be used with Callables.](https://github.com/godotengine/godot/pull/38645)
    - [Rewritten Tween with more functionality](https://github.com/godotengine/godot/pull/41794).
    - Tween is no longer a node.
    - Easier chaining of tweens.
    - Low-level tweening option to get an interpolated value directly.
    - *Existing projects will have to be modified to account for this, as automatic conversion isn't feasible.*
    - [New Time singleton to replace date/time handling methods in the OS singleton.](https://github.com/godotengine/godot/pull/49123)
    - Includes new methods to handle ISO 8601 timestamp conversion.
    - Vectors and Colors can now be clamped between two values their respective `clamp()` methods.
    - New `Vector3.limit_length()` method as a Vector3 counterpart to `Vector2.limit_length()` (formerly `Vector2.clamped()`).
    - New PackedArrays to replace PoolArrays.
    - 64-bit integer and float arrays are now available in addition to the existing 32-bit ones.
    - New `ConfigFile.parse(data: String)` method to load a string as if it was a ConfigFile on disk.
    - New `Image.save_png_to_buffer()` method to save a PNG image to memory as a PackedByteArray (instead of saving to disk).
    - [New File API to check, read and write symbolic links on macOS and Linux.](https://github.com/godotengine/godot/pull/46866)

    #### Buildsystem

    - New `custom_modules` option to compile external user-provided C++ modules.
    - The path should *contain* one or more C++ modules, but scanning isn't recursive beyond that level.
    - Example: `scons custom_modules="../project/modules"`
    - [Replaced GDNative with GDExtension](https://godotengine.org/article/introducing-gd-extensions).
    - Easier setup and compilation for various platforms.
    - Code structure is more similar to [statically compiled C++ modules](https://docs.godotengine.org/en/stable/development/cpp/custom_modules_in_cpp.html).
    - Lower performance overhead compared to GDNative.

    #### Editor

    @@ -248,6 +257,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Input

    - Renamed InputEventKey's `scancode` to `keycode`.
    - Renamed InputMap's `get_action_list()` to `get_action_events()`.

    #### Networking

    @@ -291,7 +301,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    #### Editor

    - Camera3D nodes no longer have a gizmo billboard icon as it could confuse people due to their constant orientation.
    - Removed the **Dim Dialog on Editor Popup** editor setting since it was made obsolete by the multi-window paradigm.

    #### Input
  16. Calinou revised this gist Oct 2, 2021. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -195,6 +195,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Spatial → Node3D
    - GIProbe → VoxelGI
    - BakedLightmap → LightmapGI
    - Light2D -> PointLight2D
    - VisibilityNotifier2D -> VisibleOnScreenNotifier2D
    - VisibilityNotifier3D -> VisibleOnScreenNotifier3D
    - VisibilityEnabler2D -> VisibleOnScreenEnabler2D
  17. Calinou revised this gist Oct 2, 2021. 1 changed file with 30 additions and 17 deletions.
    47 changes: 30 additions & 17 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev, commits between `af3f9a854edef78e751d4fb68df854b1c0cc24c6` and `139a9d637084f928c3ed43ac6aad2178748ed8e4` not included)
    ## [Unreleased] (4.0-dev, commits between `af3f9a854edef78e751d4fb68df854b1c0cc24c6` and `446460eaf99a34f3a6fd082fb290bf437e877aa9` not included)

    ### Added

    @@ -13,13 +13,19 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - New TileMap and TileSet resources.
    - New Vector2i, Vector3i and Rect2i types.
    - These are integer variants of Vector2, Vector3 and Rect2.
    - Rect2 can now be interpolated using the Tween node.
    - Callable type for first-class functions (can be created with lambdas in GDScript).
    - [New `Array.map()`, `Array.filter()` and `Array.reduce()` methods that can be used with Callables.](https://github.com/godotengine/godot/pull/38645)
    - [Rewritten Tween with more functionality](https://github.com/godotengine/godot/pull/41794).
    - Tween is no longer a node.
    - Easier chaining of tweens.
    - Low-level tweening option to get an interpolated value directly.
    - *Existing projects will have to be modified to account for this, as automatic conversion isn't feasible.*
    - Vectors and Colors can now be clamped between two values their respective `clamp()` methods.
    - New `Vector3.limit_length()` method as a Vector3 counterpart to `Vector2.limit_length()` (formerly `Vector2.clamped()`).
    - New PackedArrays to replace PoolArrays.
    - 64-bit integer and float arrays are now available in addition to the existing 32-bit ones.
    - `ConfigFile.parse(data: String)` method to load a string as if it was a ConfigFile on disk.
    - `Image.save_png_to_buffer()` method to save a PNG image to memory as a PackedByteArray (instead of saving to disk).
    - New `ConfigFile.parse(data: String)` method to load a string as if it was a ConfigFile on disk.
    - New `Image.save_png_to_buffer()` method to save a PNG image to memory as a PackedByteArray (instead of saving to disk).
    - [New File API to check, read and write symbolic links on macOS and Linux.](https://github.com/godotengine/godot/pull/46866)

    #### Buildsystem
    @@ -101,6 +107,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - New DisplayServer abstraction, allowing for the creation of multiple windows.
    - This is used in the editor for detachable docks, but can also be used in projects.
    - **Android:** [Allow basic user data backup. This can be disabled in the export preset if needed.](https://github.com/godotengine/godot/pull/49069)
    - **Android:** [Support for changing the mouse cursor shape (no custom images)](https://github.com/godotengine/godot/pull/44201).
    - **iOS:** [The targeted device family (iPhone, iPad, iPhone and iPad) can now be specified in the export preset.](https://github.com/godotengine/godot/pull/49137)

    #### Physics
    @@ -117,17 +124,18 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - New Vulkan renderer.
    - Implemented shader caching to avoid freezes during gameplay.
    - Support for specular mapping when using 2D lighting.
    - [New DirectionalLight2D node for 2D lighting.](https://github.com/godotengine/godot/pull/43297)
    - CanvasGroup node to modulate several 2D nodes as a group (or apply shaders to them).
    - Support for clipping in CanvasItem, replacing the use of Light2D as masks in a more convenient manner.
    - Support for light projectors/"cookies" in OmniLight3D and SpotLight3D.
    - [Support for light projectors/"cookies" in OmniLight3D and SpotLight3D.](https://github.com/godotengine/godot/pull/37887)
    - Only supported for lights with shadows enabled.
    - 3D lights now have a Size property which can be set to simulate area lights.
    - This property also affects how fast shadow penumbras will grow over distance.
    - A shadow blur property is also available to set a constant blurring factor on a per-light basis.
    - Shadow mapping with improved filtering and PCSS-like penumbra simulation.
    - Shadow normal offset bias is now implemented to avoid issues with shadow acne or peter-panning.
    - New Decal node to project textures onto 3D surfaces.
    - New fully real-time GIProbe.
    - [New Decal node to project textures onto 3D surfaces.](https://github.com/godotengine/godot/pull/37861)
    - New fully real-time VoxelGI (ex-GIProbe).
    - Dynamic objects can receive GI and contribute to it.
    - [Volumetric fog](https://github.com/godotengine/godot/pull/41213) with optional GI contribution.
    - Exponential fog to replace the old distance-based fog.
    @@ -165,13 +173,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Audio

    - [Increased the default AudioStreamPlayer3D unit size to (1 → 10) to make sounds more audible while setting up the node.](https://github.com/godotengine/godot/pull/38224)
    - Renamed the audio-related `FFT_Size` enum to `FFTSize` for consistency.

    #### Core

    - Increased the maximum number of OpenSimplexNoise octaves (6 → 9).
    - Running a project from a debug build will now append ` (DEBUG)` to the window title.
    - This is to ensure the implications of running from a debug build (such as lower performance) are well-understood.
    - The window title can be set manually to remove this suffix.
    - Tweaked the output strings to be more human-readable when printing various built-in Variant and Object types.
    - Renamed File's `endian_swap` property to `big_endian` for consistency with ResourceSaver and StreamPeer.
    - [Renamed File's `get_len()` method to `get_length()`.](https://github.com/godotengine/godot/pull/49061)
    - Renamed `Vector2.clamped()` to `Vector2.limit_length()` to differentiate it from the new `Vector2.clamp()`.
    @@ -182,28 +188,37 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Renamed the built-in Transform type to Transform3D.
    - Renamed Node3D's `translation` property to `position` for consistency with Node2D.
    - Moved YSort functionality to a Node2D property.
    - Viewports now use a size of 512×512 by default to make them visible out of the box.
    - [Screen orientation is now represented as an enum in the Project Settings.](https://github.com/godotengine/godot/pull/48939)
    - [Renamed 3D nodes to contain an explicit "3D" prefix for clarity and consistency](https://github.com/godotengine/godot/pull/37340).
    - Renamed various nodes:
    - Spatial → Node3D
    - GIProbe → VoxelGI
    - BakedLightmap → LightmapGI
    - VisibilityNotifier2D -> VisibleOnScreenNotifier2D
    - VisibilityNotifier3D -> VisibleOnScreenNotifier3D
    - VisibilityEnabler2D -> VisibleOnScreenEnabler2D
    - VisibilityEnabler3D -> VisibleOnScreenEnabler3D
    - Old node names are automatically converted when loading scenes from Godot 3.x.

    #### Editor

    - Renewed the editor theme for a more modern design.
    - [Increased icon saturation by 30% when using a dark theme.](https://github.com/godotengine/godot/pull/48644)
    - Icon saturation can now be adjusted in the Editor Settings.
    - Revamped the export template manager for better usability.
    - [Improved the audio bus editor appearance.](https://github.com/godotengine/godot/pull/49130)
    - Improved layout and texts of the Manage Editor Features dialog.
    - Improved the Video RAM debugger usability.
    - The Video RAM tab is now refreshed automatically when switching to it.
    - Hovering layer checkboxes in the inspector now results in visual feedback.
    - Clicking between two checkboxes will now enable the checkbox that was last highlighted instead of doing nothing.
    - Leaving freelook mode will now restore the mouse to the position it was before entering freelook mode.
    - The crosshair was removed as a result of this change.
    - CSV profiler measures can now be saved anywhere on the filesystem, not just in the project folder.
    - Improved the 2D zooming algorithm to always visit powers of two (50%, 100%, 200%, …) and avoid floating-point precision issues.
    - Times are now displayed as milliseconds in the profiler and performance monitors (instead of seconds).
    - Improved the batch rename dialog usability and design consistency.
    - Clarified error messages when there are regular expression errors.
    - Optimized editor icon generation to speed up editor startup.
    - Script editor autocompletion now displays previews next to color constant suggestions.
    - The number of replaced results now appears in place of the matches counter when replacing text in the script editor.
    - Pressing <kbd>Enter</kbd> (or <kbd>Shift + Enter</kbd>) in the script editor replacement dialog now performs a forwards (or backwards) replacement operation.
    - Pressing <kbd>Ctrl + F</kbd> now focuses the search field in the AssetLib tab.
    @@ -216,12 +231,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Tweaked Camera2D editor line colors for better visibility.
    - Light theme presets now use a negative contrast rate by default for a more logical preview of UI elevation.
    - Increased the use of bold fonts throughout the editor.
    - Tweaked the pressed CheckBox and CheckButton icons for better visibility.
    - Revised icons for the Gradient and GradientTexture resources.
    - Renamed "Identifier" to "Bundle Identifier" in the macOS and iOS export presets for clarity.
    - Renamed "Projects" to "Local Projects" and "Templates" to "Asset Library Projects" in the project manager for clarity.
    - Renamed the script editor's "Adaptive" syntax theme to "Default" and "Default" to "Godot 2", for consistency with the editor theme presets.
    - Flipped the 2D editor icon to match Godot's handedness.
    - Flipped the 2D editor icon to match Godot's coordinate handedness.

    #### GUI

  18. Calinou revised this gist Oct 2, 2021. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev, commits between `ad8081216c73b8a0ace555eeb96c1d4fbcb3e50e` and `139a9d637084f928c3ed43ac6aad2178748ed8e4` not included)
    ## [Unreleased] (4.0-dev, commits between `af3f9a854edef78e751d4fb68df854b1c0cc24c6` and `139a9d637084f928c3ed43ac6aad2178748ed8e4` not included)

    ### Added

  19. Calinou revised this gist Oct 2, 2021. 1 changed file with 38 additions and 6 deletions.
    44 changes: 38 additions & 6 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -19,8 +19,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - New PackedArrays to replace PoolArrays.
    - 64-bit integer and float arrays are now available in addition to the existing 32-bit ones.
    - `ConfigFile.parse(data: String)` method to load a string as if it was a ConfigFile on disk.
    - `Image.save_png_to_buffer()` method to save a PNG image to memory as a PackedByteArray (instead of saving to disk).
    - [New File API to check, read and write symbolic links on macOS and Linux.](https://github.com/godotengine/godot/pull/46866)

    #### Buildsystem

    - New `custom_modules` option to compile external user-provided C++ modules.
    - The path should *contain* one or more C++ modules, but scanning isn't recursive beyond that level.
    - Example: `scons custom_modules="../project/modules"`

    #### Editor

    - New TileMap and TileSet editors with better usability.
    @@ -39,6 +46,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - **macOS:** Support for building Godot with Clang sanitizers.
    - **HTML5:** [Support for profiling projects exported to HTML5.](https://godotengine.org/article/html5-export-profiling)

    #### Export

    - **macOS:** Projects can now optionally be exported to a application bundle contained within a ZIP archive.
    - Previously, a DMG image was always used when exporting from macOS.
    - **macOS:** DMG images can now be codesigned after exporting.

    #### GDScript

    - GDScript was rewritten from scratch with a cleaner approach.
    @@ -51,6 +64,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    - Support for multiple windows on desktop platforms. Projects can spawn additional windows, each with their own viewport.
    - RichTextLabel property `fit_content_height` to make the label's height fit its content automatically (not always reliable).
    - RichTextLabel's `img` tag now supports an optional `color` attribute to modulate the image.
    - `get_char_size()` is now exposed in Font, making it usable in DynamicFont rather than being limited to BitmapFont.
    - [Tree can now highlight relationship lines for the currently selected item, its parents and direct children.](https://github.com/godotengine/godot/pull/48546)
    - This is used in the scene tree dock in the editor.

    @@ -93,6 +108,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - New CharacterBody node to supersede KinematicBody.
    - Some KinematicBody features were moved to PhysicsBody.

    #### Porting

    - **Android:** Clients of the Godot library can now add their own command line arguments.

    #### Rendering

    - New Vulkan renderer.
    @@ -109,12 +128,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Shadow normal offset bias is now implemented to avoid issues with shadow acne or peter-panning.
    - New Decal node to project textures onto 3D surfaces.
    - New fully real-time GIProbe.
    - Support for anisotropy to reduce leaks (at the cost of performance, disabled by default).
    - Dynamic objects can receive GI and contribute to it.
    - [Volumetric fog](https://github.com/godotengine/godot/pull/41213) with optional GI contribution.
    - Exponential fog to replace the old distance-based fog.
    - [New signed distance field-based global illumination](https://godotengine.org/article/godot-40-gets-sdf-based-real-time-global-illumination) for open world lighting.
    - Dynamic objects can receive GI, but not contribute to it.
    - [New signed distance field-based global illumination](https://godotengine.org/article/godot-40-gets-sdf-based-real-time-global-illumination) (SDFGI) for open world lighting.
    - Enabled in the WorldEnvironment. No node required, no baking.
    - Semi-realtime: dynamic objects can receive GI, but not contribute to it.
    - [New GPU-based lightmapper](https://godotengine.org/article/godot-40-will-get-new-modernized-lightmapper) with built-in denoising.
    - Improved support for dynamic objects with better performance and quality.
    - Generated UV2s are now cached across reimports.
    @@ -156,6 +175,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Renamed File's `endian_swap` property to `big_endian` for consistency with ResourceSaver and StreamPeer.
    - [Renamed File's `get_len()` method to `get_length()`.](https://github.com/godotengine/godot/pull/49061)
    - Renamed `Vector2.clamped()` to `Vector2.limit_length()` to differentiate it from the new `Vector2.clamp()`.
    - Replaced `Node.add_child_below_node()` with `Node.add_sibling()`.
    - Replaced `Directory.list_dir_begin()`'s `skip_navigational` and `skip_hidden` arguments with `show_navigational` and `show_hidden`.
    - Both arguments are `false` by default, which means the default behavior is now to exclude both navigational and hidden files from the returned list.
    - Renamed the built-in Quat type to Quaternion.
    @@ -187,6 +207,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The number of replaced results now appears in place of the matches counter when replacing text in the script editor.
    - Pressing <kbd>Enter</kbd> (or <kbd>Shift + Enter</kbd>) in the script editor replacement dialog now performs a forwards (or backwards) replacement operation.
    - Pressing <kbd>Ctrl + F</kbd> now focuses the search field in the AssetLib tab.
    - Pressing <kbd>G</kbd> now switches to the Pan mode in the 2D editor.
    - The TileMap editor's Bucket Fill shortcut was moved to <kbd>B</kbd> to cater for this change.
    - Mouse wheel behavior for zooming in the animation behavior is now inverted.
    - The Sync Scene Changes and Sync Script Changes settings' values now persist on a per-project basis instead of being always enabled by default.
    - Various tooltips have been added or modified to clarify the editor operation.
    - Various visual and formatting changes to the editor help to improve readability and be closer to the online class reference.
    @@ -202,9 +225,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    #### GUI

    - Improve drive letter handling in EditorFileDialog and FileDialog.
    - Improved drive letter handling in EditorFileDialog and FileDialog.
    - Container nodes (except PanelContainer) now use the Pass mouse mode by default.
    - Pressing the left/right arrows while having selected text will now move the cursor to the beginning/end of the selection in LineEdit (while unselecting the text as usual).
    - TextEdit's `search()` method now returns a Dictionary instead of a PackedIntArray.
    - **macOS:** The <kbd>Ctrl + A</kbd> and <kbd>Ctrl + E</kbd> navigation shortcuts now work in LineEdit.

    #### Input
    @@ -235,7 +259,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    - Renamed the `x11` platform to `linuxbsd` to prepare for Wayland support.
    - The engine is now written in C++17.
    - Python 3 and SCons 3.1 are now required to build Godot from source.
    - Python 3.6 and SCons 3.1 are now required to build Godot from source.

    ### Removed

    @@ -265,7 +289,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Removed the deprecated `allow_object_decoding` property from PacketPeer.
    - Removed the deprecated `sync` and `slave` high-level multiplayer keywords.

    #### Porting
    #### Export

    - **iOS:** [Remove redundant orientation export setting in favor of the orientation project setting.](https://github.com/godotengine/godot/pull/48939)

    @@ -278,6 +302,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Core

    - Fixed UV mapping on CSGSphere.
    - The positional command line argument now considers `.res` and `.tres` files as runnable scene formats.
    - This fixes Godot not running the main scene or a custom scene if they were saved with a `.res` or `.tres` extension.
    - **macOS/Linux:** Fix the result of `Directory.get_space_left()`.
    - **Windows:** Godot can now kill its own PID using `OS.kill()`.

    @@ -290,3 +316,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    - Fixed OptionButton minimum size.
    - TabContainer is no longer too large when tabs are hidden.
    - ScrollBar now allows using `scroll_to_line()` when Scroll Active is disabled.
    - DynamicFont outlines now have antialiasing disabled if it was disabled on the font itself.

    #### Porting

    - **Windows:** `OS.execute()` now only quotes command line arguments if they contain special characters.
  20. Calinou revised this gist Jun 5, 2021. 1 changed file with 82 additions and 4 deletions.
    86 changes: 82 additions & 4 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,27 +4,33 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev at commit `ad8081216c73b8a0ace555eeb96c1d4fbcb3e50e`)
    ## [Unreleased] (4.0-dev, commits between `ad8081216c73b8a0ace555eeb96c1d4fbcb3e50e` and `139a9d637084f928c3ed43ac6aad2178748ed8e4` not included)

    ### Added

    #### Core

    - New TileMap and TileSet resources.
    - New Vector2i, Vector3i and Rect2i types.
    - These are integer variants of Vector2, Vector3 and Rect2.
    - Rect2 can now be interpolated using the Tween node.
    - Vectors and Colors can now be clamped between two values their respective `clamp()` methods.
    - New `Vector3.limit_length()` method as a Vector3 counterpart to `Vector2.limit_length()` (formerly `Vector2.clamped()`).
    - New PackedArrays to replace PoolArrays.
    - 64-bit integer and float arrays are now available in addition to the existing 32-bit ones.
    - `ConfigFile.parse(data: String)` method to load a string as if it was a ConfigFile on disk.
    - [New File API to check, read and write symbolic links on macOS and Linux.](https://github.com/godotengine/godot/pull/46866)

    #### Editor

    - New TileMap and TileSet editors with better usability.
    - Support for multiple windows.
    - Docks can be moved out of the main window into separate windows.
    - Single-window mode can be enabled in the Editor Settings to revert to the old behavior.
    - New dynamic infinite 3D grid, replacing the fixed 3D grid.
    - Movement and scaling handles in the 2D editor (similar to the 3D editor).
    - New Replace in Files dialog in the script editor to complement Find in Files.
    - Holding down <kbd>Ctrl</kbd> while drag-and-dropping a resource from the FileSystem dock to the script editor will now add `preload()` to the pasted resource path.
    - New settings to change the freelook navigation scheme:
    - Default.
    - Partially axis-locked (similar to id Tech and Source's noclip modes). The Up and Down keys won't take the current view pitch into account.
    @@ -45,6 +51,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    - Support for multiple windows on desktop platforms. Projects can spawn additional windows, each with their own viewport.
    - RichTextLabel property `fit_content_height` to make the label's height fit its content automatically (not always reliable).
    - [Tree can now highlight relationship lines for the currently selected item, its parents and direct children.](https://github.com/godotengine/godot/pull/48546)
    - This is used in the scene tree dock in the editor.

    #### Import

    @@ -55,6 +63,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Support for physical (keyboard layout-independent) key codes.
    - This can be used to provide <kbd>W</kbd>/<kbd>A</kbd>/<kbd>S</kbd>/<kbd>D</kbd> controls that work on any keyboard layout.
    - `DisplayServer.keyboard_get_current_layout()` and `DisplayServer.keyboard_get_layout_*()` methods to get information about keyboard layouts.
    - New `Input.MOUSE_MODE_CONFINED_HIDDEN` mouse mode to combine the confined and hidden mouse modes.

    #### Mono/C#

    @@ -70,18 +79,36 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Networking

    - [Support for DTLS encryption in UDP and ENet.](https://godotengine.org/article/enet-dtls-encryption)
    - Support for multiple address resolution in DNS requests (like in Godot 2.1).

    #### Porting

    - New DisplayServer abstraction, allowing for the creation of multiple windows.
    - This is used in the editor for detachable docks, but can also be used in projects.
    - **Android:** [Allow basic user data backup. This can be disabled in the export preset if needed.](https://github.com/godotengine/godot/pull/49069)
    - **iOS:** [The targeted device family (iPhone, iPad, iPhone and iPad) can now be specified in the export preset.](https://github.com/godotengine/godot/pull/49137)

    #### Physics

    - New CharacterBody node to supersede KinematicBody.
    - Some KinematicBody features were moved to PhysicsBody.

    #### Rendering

    - New Vulkan renderer.
    - Specular mapping in 2D.
    - Implemented shader caching to avoid freezes during gameplay.
    - Support for specular mapping when using 2D lighting.
    - CanvasGroup node to modulate several 2D nodes as a group (or apply shaders to them).
    - Support for clipping in CanvasItem, replacing the use of Light2D as masks in a more convenient manner.
    - Support for light projectors/"cookies" in OmniLight3D and SpotLight3D.
    - Only supported for lights with shadows enabled.
    - 3D lights now have a Size property which can be set to simulate area lights.
    - This property also affects how fast shadow penumbras will grow over distance.
    - A shadow blur property is also available to set a constant blurring factor on a per-light basis.
    - Shadow mapping with improved filtering and PCSS-like penumbra simulation.
    - New, fully real-time GIProbe.
    - Shadow normal offset bias is now implemented to avoid issues with shadow acne or peter-panning.
    - New Decal node to project textures onto 3D surfaces.
    - New fully real-time GIProbe.
    - Support for anisotropy to reduce leaks (at the cost of performance, disabled by default).
    - Dynamic objects can receive GI and contribute to it.
    - [Volumetric fog](https://github.com/godotengine/godot/pull/41213) with optional GI contribution.
    @@ -103,6 +130,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    [#6](https://godotengine.org/article/vulkan-progress-report-6),
    [#7](https://godotengine.org/article/vulkan-progress-report-7).

    #### Shaders

    - [Add Billboard mode to visual shaders.](https://github.com/godotengine/godot/pull/49157)
    - [The constants `PI`, `TAU` and `E` are now available in the shader language.](https://github.com/godotengine/godot/pull/48837)

    #### Miscellaneous

    - The engine is now unit-tested using [doctest](https://github.com/onqtam/doctest).
    @@ -111,15 +143,35 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ### Changed

    #### Audio

    - [Increased the default AudioStreamPlayer3D unit size to (1 → 10) to make sounds more audible while setting up the node.](https://github.com/godotengine/godot/pull/38224)

    #### Core

    - Increased the maximum number of OpenSimplexNoise octaves (6 → 9).
    - Running a project from a debug build will now append ` (DEBUG)` to the window title.
    - This is to ensure the implications of running from a debug build (such as lower performance) are well-understood.
    - The window title can be set manually to remove this suffix.
    - Renamed File's `endian_swap` property to `big_endian` for consistency with ResourceSaver and StreamPeer.
    - [Renamed File's `get_len()` method to `get_length()`.](https://github.com/godotengine/godot/pull/49061)
    - Renamed `Vector2.clamped()` to `Vector2.limit_length()` to differentiate it from the new `Vector2.clamp()`.
    - Replaced `Directory.list_dir_begin()`'s `skip_navigational` and `skip_hidden` arguments with `show_navigational` and `show_hidden`.
    - Both arguments are `false` by default, which means the default behavior is now to exclude both navigational and hidden files from the returned list.
    - Renamed the built-in Quat type to Quaternion.
    - Renamed the built-in Transform type to Transform3D.
    - Renamed Node3D's `translation` property to `position` for consistency with Node2D.
    - Moved YSort functionality to a Node2D property.
    - [Screen orientation is now represented as an enum in the Project Settings.](https://github.com/godotengine/godot/pull/48939)

    #### Editor

    - Renewed the editor theme for a more modern design.
    - [Increased icon saturation by 30% when using a dark theme.](https://github.com/godotengine/godot/pull/48644)
    - Icon saturation can now be adjusted in the Editor Settings.
    - Revamped the export template manager for better usability.
    - [Improved the audio bus editor appearance.](https://github.com/godotengine/godot/pull/49130)
    - Improved layout and texts of the Manage Editor Features dialog.
    - Improved the Video RAM debugger usability.
    - The Video RAM tab is now refreshed automatically when switching to it.
    - Hovering layer checkboxes in the inspector now results in visual feedback.
    @@ -138,7 +190,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The Sync Scene Changes and Sync Script Changes settings' values now persist on a per-project basis instead of being always enabled by default.
    - Various tooltips have been added or modified to clarify the editor operation.
    - Various visual and formatting changes to the editor help to improve readability and be closer to the online class reference.
    - Tweaked Camera2D editor line colors for better visibility.
    - Light theme presets now use a negative contrast rate by default for a more logical preview of UI elevation.
    - Increased the use of bold fonts throughout the editor.
    - Tweaked the pressed CheckBox and CheckButton icons for better visibility.
    - Revised icons for the Gradient and GradientTexture resources.
    - Renamed "Identifier" to "Bundle Identifier" in the macOS and iOS export presets for clarity.
    - Renamed "Projects" to "Local Projects" and "Templates" to "Asset Library Projects" in the project manager for clarity.
    - Renamed the script editor's "Adaptive" syntax theme to "Default" and "Default" to "Godot 2", for consistency with the editor theme presets.
    - Flipped the 2D editor icon to match Godot's handedness.

    #### GUI

    @@ -157,6 +217,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    #### Physics

    - Split KinematicBody into the new CharacterBody node and PhysicsBody.
    - Renamed PlaneShape to WorldMarginShape.

    #### Rendering
    @@ -165,6 +226,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Quality settings have been moved from individual nodes and resources to the Project Settings for better centralization.
    - Quality settings now have performance hints in their values' names, such as "Fast" or "Slow".

    #### Shaders

    - Renamed the `.shader` file extension to `.gdshader`.
    - Existing text-based shader files will have to be renamed before loading the project in a new engine version.

    #### Miscellaneous

    - Renamed the `x11` platform to `linuxbsd` to prepare for Wayland support.
    @@ -173,8 +239,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ### Removed

    #### Buildsystem

    - Removed the `server` platform in favor of disabling specific DisplayServers at build-time (e.g. `vulkan=no`).

    #### Core

    - Removed the YSort node in favor of the Node2D YSort property.
    - Removed the deprecated `Color.gray()` method.
    - Use `Color.v()` for a better grayscale approximation instead.
    - Removed built-in HQ2X implementation (used for crude hiDPI support in the default project theme).
    @@ -183,16 +254,21 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    #### Editor

    - Camera3D nodes no longer have a gizmo billboard icon as it could confuse people due to their constant orientation.
    - Removed the **Dim Dialog on Editor Popup** editor setting since it was made obsolete by the multi-window paradigm.

    #### Input

    - `DisplayServer.get_latin_keyboard_variant()` method (replaced by the more flexible `DisplayServer.keyboard_get_current_layout()`).
    - Removed the `DisplayServer.get_latin_keyboard_variant()` method (replaced by the more flexible `DisplayServer.keyboard_get_current_layout()`).

    #### Networking

    - Removed the deprecated `allow_object_decoding` property from PacketPeer.
    - Removed the deprecated `sync` and `slave` high-level multiplayer keywords.

    #### Porting

    - **iOS:** [Remove redundant orientation export setting in favor of the orientation project setting.](https://github.com/godotengine/godot/pull/48939)

    #### Physics

    - Removed the deprecated PhysicsBody `friction` and `bounce` properties (replaced by PhysicsMaterial).
    @@ -201,6 +277,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    #### Core

    - Fixed UV mapping on CSGSphere.
    - **macOS/Linux:** Fix the result of `Directory.get_space_left()`.
    - **Windows:** Godot can now kill its own PID using `OS.kill()`.

    #### Editor
  21. Calinou revised this gist Dec 8, 2020. No changes.
  22. Calinou revised this gist Sep 26, 2020. 1 changed file with 172 additions and 2 deletions.
    174 changes: 172 additions & 2 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,40 +4,210 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (4.0-dev at commit `8f838f33b`)
    ## [Unreleased] (4.0-dev at commit `ad8081216c73b8a0ace555eeb96c1d4fbcb3e50e`)

    ### Added

    #### Core

    - New Vector2i, Vector3i and Rect2i types.
    - These are integer variants of Vector2, Vector3 and Rect2.
    - Rect2 can now be interpolated using the Tween node.
    - New PackedArrays to replace PoolArrays.
    - 64-bit integer and float arrays are now available in addition to the existing 32-bit ones.
    - `ConfigFile.parse(data: String)` method to load a string as if it was a ConfigFile on disk.

    #### Editor

    - Support for multiple windows.
    - Docks can be moved out of the main window into separate windows.
    - Single-window mode can be enabled in the Editor Settings to revert to the old behavior.
    - New dynamic infinite 3D grid, replacing the fixed 3D grid.
    - Movement and scaling handles in the 2D editor (similar to the 3D editor).
    - New Replace in Files dialog in the script editor to complement Find in Files.
    - New settings to change the freelook navigation scheme:
    - Default.
    - Partially axis-locked (similar to id Tech and Source's noclip modes). The Up and Down keys won't take the current view pitch into account.
    - Fully axis-locked (similar to Minecraft). The Forward, Backward, Up and Down keys won't take the current view pitch into account.
    - **macOS:** More built-in mouse cursors are now exposed (such as diagonal resize cursors).
    - **macOS:** Support for building Godot with Clang sanitizers.
    - **HTML5:** [Support for profiling projects exported to HTML5.](https://godotengine.org/article/html5-export-profiling)

    #### GDScript

    - GDScript was rewritten from scratch with a cleaner approach.
    - See individual progress reports for more information:
    [#1](https://godotengine.org/article/gdscript-progress-report-writing-tokenizer),
    [#2](https://godotengine.org/article/gdscript-progress-report-writing-new-parser),
    [#3](https://godotengine.org/article/gdscript-progress-report-type-checking-back).

    #### GUI

    - Support for multiple windows on desktop platforms. Projects can spawn additional windows, each with their own viewport.
    - RichTextLabel property `fit_content_height` to make the label's height fit its content automatically (not always reliable).

    #### Import

    - Support for importing lights from glTF scenes.

    #### Input

    - Support for physical (keyboard layout-independent) key codes.
    - This can be used to provide <kbd>W</kbd>/<kbd>A</kbd>/<kbd>S</kbd>/<kbd>D</kbd> controls that work on any keyboard layout.
    - `DisplayServer.keyboard_get_current_layout()` and `DisplayServer.keyboard_get_layout_*()` methods to get information about keyboard layouts.

    #### Mono/C#

    - Support for exporting C# projects to iOS and HTML5.
    - [C# events can now be used to implement Godot signals](https://godotengine.org/article/csharp-ios-signals-events).
    - [New Visual Studio and Visual Studio Code add-ons.](https://godotengine.org/article/csharp-vs-and-vscode)

    #### Navigation

    - [New NavigationServer.](https://godotengine.org/article/navigation-server-godot-4-0)
    - Support for dynamic obstacle avoidance.

    #### Networking

    - [Support for DTLS encryption in UDP and ENet.](https://godotengine.org/article/enet-dtls-encryption)

    #### Rendering

    - Vulkan renderer.
    - New Vulkan renderer.
    - Specular mapping in 2D.
    - Support for light projectors/"cookies" in OmniLight3D and SpotLight3D.
    - Only supported for lights with shadows enabled.
    - 3D lights now have a Size property which can be set to simulate area lights.
    - This property also affects how fast shadow penumbras will grow over distance.
    - A shadow blur property is also available to set a constant blurring factor on a per-light basis.
    - Shadow mapping with improved filtering and PCSS-like penumbra simulation.
    - New, fully real-time GIProbe.
    - Support for anisotropy to reduce leaks (at the cost of performance, disabled by default).
    - Dynamic objects can receive GI and contribute to it.
    - [Volumetric fog](https://github.com/godotengine/godot/pull/41213) with optional GI contribution.
    - Exponential fog to replace the old distance-based fog.
    - [New signed distance field-based global illumination](https://godotengine.org/article/godot-40-gets-sdf-based-real-time-global-illumination) for open world lighting.
    - Dynamic objects can receive GI, but not contribute to it.
    - [New GPU-based lightmapper](https://godotengine.org/article/godot-40-will-get-new-modernized-lightmapper) with built-in denoising.
    - Improved support for dynamic objects with better performance and quality.
    - Generated UV2s are now cached across reimports.
    - [Physical sky material and custom sky shaders](https://godotengine.org/article/custom-sky-shaders-godot-4-0), both supporting real-time updates.
    - [Global and per-instance shader uniforms.](https://godotengine.org/article/godot-40-gets-global-and-instance-shader-uniforms)
    - This can be used to better reuse shaders, leading to improved performance.
    - See individual progress reports for more information:
    [#1](https://godotengine.org/article/vulkan-progress-report-1),
    [#2](https://godotengine.org/article/vulkan-progress-report-2),
    [#3](https://godotengine.org/article/vulkan-progress-report-3),
    [#4](https://godotengine.org/article/vulkan-progress-report-4),
    [#5](https://godotengine.org/article/vulkan-progress-report-5),
    [#6](https://godotengine.org/article/vulkan-progress-report-6),
    [#7](https://godotengine.org/article/vulkan-progress-report-7).

    #### Miscellaneous

    - The engine is now unit-tested using [doctest](https://github.com/onqtam/doctest).
    - Switched from Travis CI and AppVeyor to GitHub Actions.
    - A Fish shell completion file is now available for the Godot editor's command line interface.

    ### Changed

    #### Core

    - Increased the maximum number of OpenSimplexNoise octaves (6 → 9).
    - Running a project from a debug build will now append ` (DEBUG)` to the window title.
    - This is to ensure the implications of running from a debug build (such as lower performance) are well-understood.
    - The window title can be set manually to remove this suffix.

    #### Editor

    - Improved the Video RAM debugger usability.
    - The Video RAM tab is now refreshed automatically when switching to it.
    - Hovering layer checkboxes in the inspector now results in visual feedback.
    - Clicking between two checkboxes will now enable the checkbox that was last highlighted instead of doing nothing.
    - Leaving freelook mode will now restore the mouse to the position it was before entering freelook mode.
    - The crosshair was removed as a result of this change.
    - CSV profiler measures can now be saved anywhere on the filesystem, not just in the project folder.
    - Improved the 2D zooming algorithm to always visit powers of two (50%, 100%, 200%, …) and avoid floating-point precision issues.
    - Times are now displayed as milliseconds in the profiler and performance monitors (instead of seconds).
    - Improved the batch rename dialog usability and design consistency.
    - Clarified error messages when there are regular expression errors.
    - Optimized editor icon generation to speed up editor startup.
    - The number of replaced results now appears in place of the matches counter when replacing text in the script editor.
    - Pressing <kbd>Enter</kbd> (or <kbd>Shift + Enter</kbd>) in the script editor replacement dialog now performs a forwards (or backwards) replacement operation.
    - Pressing <kbd>Ctrl + F</kbd> now focuses the search field in the AssetLib tab.
    - The Sync Scene Changes and Sync Script Changes settings' values now persist on a per-project basis instead of being always enabled by default.
    - Various tooltips have been added or modified to clarify the editor operation.
    - Various visual and formatting changes to the editor help to improve readability and be closer to the online class reference.
    - Renamed "Identifier" to "Bundle Identifier" in the macOS and iOS export presets for clarity.

    #### GUI

    - Improve drive letter handling in EditorFileDialog and FileDialog.
    - Container nodes (except PanelContainer) now use the Pass mouse mode by default.
    - Pressing the left/right arrows while having selected text will now move the cursor to the beginning/end of the selection in LineEdit (while unselecting the text as usual).
    - **macOS:** The <kbd>Ctrl + A</kbd> and <kbd>Ctrl + E</kbd> navigation shortcuts now work in LineEdit.

    #### Input

    - Renamed InputEventKey's `scancode` to `keycode`.

    #### Networking

    - Optimized bandwidth usage in the high-level multiplayer API.

    #### Physics

    - Renamed PlaneShape to WorldMarginShape.

    #### Rendering

    - Some Environment settings such as depth of field have been moved to a CameraEffects resource which is assigned to individual Camera nodes.
    - Quality settings have been moved from individual nodes and resources to the Project Settings for better centralization.
    - Quality settings now have performance hints in their values' names, such as "Fast" or "Slow".

    #### Miscellaneous

    - Renamed the `x11` platform to `linuxbsd` to prepare for Wayland support.
    - The engine is now written in C++17.
    - Python 3 and SCons 3.1 are now required to build Godot from source.

    ### Removed

    #### Core

    - Removed the deprecated `Color.gray()` method.
    - Use `Color.v()` for a better grayscale approximation instead.
    - Removed built-in HQ2X implementation (used for crude hiDPI support in the default project theme).
    - This helps with binary size as HQ2X is made of particularly large functions.

    #### Editor

    - Camera3D nodes no longer have a gizmo billboard icon as it could confuse people due to their constant orientation.

    #### Input

    - `DisplayServer.get_latin_keyboard_variant()` method (replaced by the more flexible `DisplayServer.keyboard_get_current_layout()`).

    #### Networking

    - Removed the deprecated `allow_object_decoding` property from PacketPeer.
    - Removed the deprecated `sync` and `slave` high-level multiplayer keywords.

    #### Physics

    - Removed the deprecated PhysicsBody `friction` and `bounce` properties (replaced by PhysicsMaterial).

    ### Fixed

    #### Core

    - **Windows:** Godot can now kill its own PID using `OS.kill()`.

    #### Editor

    - The Android exporter no longer reports progress on each file, greatly speeding up the exporting process.
    - Searching with the Whole Words option enabled in the script editor is no longer exceedingly slow.

    #### GUI

    - Fixed OptionButton minimum size.
  23. Calinou revised this gist May 10, 2020. 1 changed file with 27 additions and 708 deletions.
    735 changes: 27 additions & 708 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,722 +4,41 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (3.2-dev at commit `d4ac0ca15`)
    ## [Unreleased] (4.0-dev at commit `8f838f33b`)

    ### Added

    - Support for [pseudo-3D depth in 2D](https://godotengine.org/article/godot-32-will-get-pseudo-3d-support-2d-engine).
    - Support for importing 3D scenes using Assimp.
    - Many formats are supported, including FBX.
    - [Support for generating audio procedurally and analyzing audio spectrums.](https://godotengine.org/article/godot-32-will-get-new-audio-features)
    - WebRTC support.
    - Includes support for the high-level multiplayer API.
    - Supports NAT traversal using STUN or TURN.
    - Support for automatically building Android templates before exporting.
    - This makes 3rd-party SDK integration easier.
    - Support for [texture atlases in 2D](https://godotengine.org/article/atlas-support-returns-godot-3-2).
    - Major improvements to the visual shader system. ([News post 1](https://godotengine.org/article/major-update-for-visual-shader-in-godot-3-2), [News post 2](https://godotengine.org/article/major-update-visual-shaders-godot-3-2-part-2))
    - Redesigned visual shader editor with drag-and-drop capability.
    - Textures can be dragged from the FileSystem dock to be added as nodes.
    - Most functions available in GLSL are now exposed.
    - Many constants such as `Pi` or `Tau` can now be used directly.
    - Support for boolean uniforms and sampler inputs.
    - New Sampler port type.
    - New conditional nodes.
    - New Expression node, allowing shader code to be written in visual shaders.
    - Support for plugins (custom nodes).
    - Custom nodes can be drag-and-dropped from the FileSystem dock.
    - Ability to copy and paste nodes.
    - Ability to delete multiple nodes at once by pressing <kbd>Delete</kbd>.
    - The node creation menu is now displayed when dragging a connection to an empty space on the graph.
    - GLES3-only functions are now distinguished from others in the creation dialog.
    - Ability to preview the code generated by the visual shader.
    - Ability to convert visual shaders to text-based shaders.
    - See the [complete list of new functions](https://github.com/godotengine/godot/pull/26164).
    - Improved visual scripting.
    - Visual scripting now uses an unified graph where all functions are represented.
    - Nodes can now be edited directly in the graph.
    - Support for fuzzy searching.
    - The `tool` mode can now be enabled in visual scripts.
    - New Deconstruct node to deconstruct a complex value into a scalar value.
    - Miscellaneous UI improvements.
    - Support for enabling/disabling parts of the editor or specific nodes.
    - This is helpful for education, or when working with artists to help prevent inadvertent changes.
    - Language server for GDScript.
    - This can be used to get better integration with external editors.
    - Version control integration in the editor.
    - This integration is VCS-agnostic (GDNative plugins provide specific VCS support).
    - Improved GridMap editor.
    - The copied mesh is now displayed during pasting.
    - The duplication/paste indicator is now rotated correctly around the pivot point.
    - Ability to cancel paste and selection by pressing <kbd>Escape</kbd>.
    - Erasing is now done using <kbd>RMB</kbd> instead of <kbd>Shift + RMB</kbd>.
    - Freelook can still be accessed by pressing <kbd>Shift + F</kbd>.
    - Improved MeshLibrary generation.
    - When appending to an existing MeshLibrary, previews are now only generated for newly-added or modified meshes.
    - Tweaked the previews' camera angle and light directions for better results.
    - Materials assigned to the MeshInstance instead of the Mesh are now exported to the MeshLibrary.
    - This is useful when exporting meshes from an imported scene (such as glTF), as it allows materials to persist across re-imports.
    - [Improved Control anchor and margin workflow.](https://github.com/godotengine/godot/pull/27559)
    - [Network profiler.](https://github.com/godotengine/godot/pull/31870)
    - Improved NavigationMesh generation.
    - GridMaps can now be used to bake navigation meshes.
    - EditorNavigationMeshGenerator can now be used in `tool` scripts.
    - Support for generating navigation meshes from static colliders.
    - When using static colliders as a geometry source, a layer mask can be specified to ignore certain colliders.
    - The generator no longer relies on the global transform, making it possible to generate navmeshes on nodes that are not in the scene tree.
    - Navigation gizmos are now updated after every new bake.
    - Support for skinning in 3D skeletons.
    - CameraServer singleton to retrieve images from mobile cameras or webcams as textures.
    - A crosshair is now displayed when using freelook in the 3D editor.
    - Project camera override button at the top of the 2D and 3D editors.
    - When enabled, the editor viewport's camera will be replicated in the running project.
    - RichTextLabel can now be extended with real-time effects and custom BBCodes.
    - Effects are implemented using the ItemFX resource.
    - `[img=<width>x<height>]` tag to resize an image displayed in a RichTextLabel.
    - If `<width>` or `<height>` is 0, the image will be adjusted to keep its original aspect.
    - Revamped node connection dialog for improved ease of use.
    - The Signals dock now displays a signal's description in a tooltip when hovering it.
    - Input actions can now be reordered by dragging them.
    - Animation frames can now be reordered by dragging them.
    - Ruler tool to measure distances and angles in the 2D editor.
    - "Clear Guides" menu option in the 2D editor to remove all guides.
    - The 2D editor grid now displays a "primary" line every 8 lines for easier measurements.
    - This value can be adjusted in the Configure Snap dialog.
    - Projects can now have a description set in the Project Settings.
    - This description is displayed as a tooltip when hovering the project in the Project Manager.
    - All Variant types can now be added as project settings using the editor (instead of just `bool`, `int`, `float` and `String`).
    - Pressing <kbd>Ctrl + F</kbd> now focuses the search field in the Project Settings and Editor Settings.
    - Quick Open dialog (<kbd>Shift + Alt + O</kbd>) to open any resource in the project.
    - Unlike the existing dialogs, it's not limited to scenes or scripts.
    - Ability to convert a Sprite to a Mesh2D, Polygon2D, CollisionPolygon2D or LightOccluder2D.
    - MultiMeshInstance2D node for using MultiMesh in 2D.
    - PointMesh primitive.
    - Drawn as a rectangle with a constant size on screen, which is cheaper compared to using triangle-based billboards.
    - 2D polygon boolean operations and Delaunay triangulation are now available in the Geometry singleton.
    - [New convex decomposition](https://godotengine.org/article/godot-3-2-adds-support-convex-decomposition) using the [V-HACD](https://github.com/kmammou/v-hacd) library.
    - Can decompose meshes into multiple convex shapes for increased accuracy.
    - Support for grouping nodes in the 3D editor.
    - "Slow" modifier in freelook (accessed by holding <kbd>Alt</kbd>).
    - The 2D editor panning limits can now be disabled in the Editor Settings.
    - "Undo Close Tab" option in the scene tabs context menu.
    - The editor is now capped to 20 FPS when the window is unfocused.
    - This decreases CPU/GPU usage if something causes the editor to redraw continuously (such as particles).
    - The editor's FPS cap can now be adjusted in the Editor Settings (both when focused and unfocused).
    - Version information is now displayed at the bottom of the editor.
    - This is intended to make the Godot version easily visible in video tutorials.
    - Support for constants in the shader language.
    - Support for local and varying arrays in the shader language.
    - Support for `switch` statements in the shader language.
    - Support for `do {...} while (...)` loops in the shader language.
    - Unlike `while`, the expression in the `do` block will always be run at least once.
    - Support for hexadecimal number literals in the shader language.
    - Ported several GLES3 shader functions such as `round()` to GLES2.
    - `SHADOW_VEC` shader parameter to alter 2D shadow computations in custom shaders.
    - Filter search box in the remote scene tree dock.
    - Ability to expand/collapse nodes recursively in the scene tree dock by holding <kbd>Shift</kbd> and clicking on a folding arrow.
    - Support for depth of field, glow and BCS in the GLES2 renderer.
    - MSAA support in the GLES2 renderer.
    - Ability to render viewports directly to the screen in the GLES2 renderer.
    - This can be faster on low-end devices, but it comes at a convenience cost.
    - Project settings to set the maximum number of lights and reflections in the GLES3 renderer.
    - Decreasing these values can lead to faster shader compilations, resulting in lower loading times.
    - Heightmap collision shape for efficient terrain collisions.
    - AStar2D class, making A* use easier in 2D.
    - Disabled collision shapes can now be added directly, without having to disable them manually after one step.
    - Context menu options to close other scene tabs, scene tabs to the right, or all scene tabs.
    - The audio bus volumes can now be snapped by holding <kbd>Ctrl</kbd> while dragging the slider.
    - Hovering an audio bus' volume slider now displays its volume in a tooltip.
    - Values in the Gradient and Curve editors can now be snapped by holding <kbd>Ctrl</kbd>.
    - Precise snapping can be obtained by holding <kbd>Shift</kbd> as well.
    - Support for snapping when scaling nodes in the 2D editor.
    - Precise snapping in the 3D editor when holding <kbd>Shift</kbd>.
    - "Align Rotation with View" in the 3D editor.
    - Unlike "Align Transform with View", only the selected node's rotation will be modified.
    - "Align Selection with View" has been renamed to "Align Transform with View".
    - All 3D gizmos now make use of snapping if enabled.
    - CSG shapes are now highlighted with a translucent overlay when selected.
    - Shapes in Union mode will use a blue overlay color by default.
    - Shapes in Subtraction mode will use an orange overlay color by default.
    - Shapes in Intersection mode will use a white overlay color.
    - Ability to move a vertex along a single axis when holding <kbd>Shift</kbd> in polygon editors.
    - Support for binary literals in GDScript (e.g. `0b101010` for `42`).
    - AutoLoads can now be used as a type in GDScript.
    - Ability to define script templates on a per-project basis.
    - Template files should be placed into a `script_templates/` directory in the project and have an extension that matches the language (`.gd` for GDScript, `.cs` for C#).
    - The path to the script templates directory can be changed in the Project Settings.
    - Ability to limit the minimum and maximum window size using `OS.set_min_window_size()` and `OS.set_max_window_size()`.
    - `Node.process_priority` property to set or get a node's processing priority.
    - This was previously only available as `Node.set_process_priority()` (without an associated getter).
    - `Node.editor_description` property for documentation purposes.
    - When hovering a node with a description in the scene tree dock, the description will be displayed in a tooltip.
    - `Button.keep_pressed_outside` property to keep a button pressed when moving the pointer outside while pressed.
    - `Button.expand_icon` property to make a button's icon expand/shrink with the button's size.
    - `Popup.set_as_minsize()` method to shrink a popup to its minimum size.
    - `Tree.get_icon_modulate()` and `Tree.set_icon_modulate()` methods to change an icon's color in a Tree.
    - `Tree.call_recursive()` method to call a method on a TreeItem and its children recursively.
    - `Light.use_gi_probe` property to exclude specific lights from GIProbe computations.
    - TranslationServer method `get_loaded_locales()` to retrieve the list of languages with a translation loaded.
    - `FRUSTUM` 3D camera mode to create tilted frustums for mirror or portal effects.
    - `Camera.project_position()` now accepts an optional `depth` parameter.
    - `CanvasItem.draw_rect()` now has `width` and `antialiased` properties to match `draw_line()`'s functionality.
    - `Engine.get_idle_frames()` and `Engine.get_physics_frames()` to get the number of idle and physics frame iterations since the project started.
    - Unlike `Engine.get_frames_drawn()`, `Engine.get_idle_frames()` will be incremented even if the render loop is disabled.
    - `Engine.get_physics_interpolation_fraction()` to get the fraction through the current physics tick at the time of the current frame.
    - This can be used to implement fixed timestep interpolation.
    - Support for shadow-to-opacity in 3D to render shadows in augmented reality contexts.
    - Ability to change a Position2D gizmo's size.
    - New Vector2 and Vector3 methods:
    - `move_toward()` to retrieve a vector moved towards another by a specified number of units.
    - `direction_to()` to retrieve a normalized vector pointing from a vector to another.
    - This is a shorter alternative to `(b - a).normalized()`.
    - AStar functions `set_point_disabled()` and `is_point_disabled()` to selectively disable points.
    - Tween now emits a `tween_all_completed` signal when all tweens are completed.
    - `Input.get_current_cursor_shape()` to retrieve the current cursor shape.
    - `InputEventAction` now has a `strength` property to simulate analog inputs.
    - `String.repeat()` method to repeat a string several times and return it.
    - `String.count()` method to count the number of occurrences of a substring in a string.
    - `String.humanize_size()` method to display a file size as an human-readable string.
    - `String.strip_escapes()` to strip non-printable escape characters from a string, including tabulations and newlines (but not spaces).
    - `String.sha1_text()` and `String.sha1_buffer()` methods to return a string's SHA-1 hash.
    - Line2D `clear_points()` method to clear all points.
    - Line2D now has a "Width Curve" property to make its width vary at different points.
    - `assert()` now accepts an optional second parameter to display a custom message when the assertion fails.
    - `posmod()` built-in GDScript function that behaves like `fposmod()`, but returns an integer value.
    - `smoothstep()` built-in GDScript function for smooth easing of values.
    - `lerp_angle()` built-in GDScript function to interpolate between two angles.
    - `ord()` built-in GDScript function to return the Unicode code point of an 1-character string.
    - `PoolByteArray.hex_encode()` method to get a string of hexadecimal numbers.
    - `Font.get_wordwrap_string_size()` method to return the rectangle size needed to draw a word-wrapped text.
    - `Camera.get_camera_rid()` method to retrieve a Camera's RID.
    - `Array.slice()` method to duplicate a subset of an Array and return it.
    - The GraphEdit box selection colors can now be changed by tweaking the `selection_fill` and `selection_stroke` theme items.
    - Toggleable HSV mode for ColorPicker.
    - ColorPicker properties to toggle the visibility and editability of presets.
    - The default ColorPicker mode (RGB, HSV, RAW) can now be changed in the Editor Settings.
    - ColorPicker now displays an indicator to denote "overbright" colors (which can't be displayed as-is in the preview).
    - Hovering a Color property in the editor inspector now displays a tooltip with the exact values.
    - `Color.transparent` constant (equivalent to `Color(1, 1, 1, 0)`).
    - `KinematicBody.get_floor_normal()` and `KinematicBody2D.get_floor_normal()` to retrieve the collided floor's normal.
    - `VehicleWheel.get_rpm()` method to retrieve a vehicle wheel's rotations per minute.
    - Per-wheel throttle, brake and steering in VehicleBody.
    - `GeometryInstance.set_custom_aabb()` to set a custom bounding box (used for view frustum culling).
    - `FuncRef.call_funcv()` to call a FuncRef with an array containing arguments.
    - In contrast to `FuncRef.call_func()`, only a single array argument is expected.
    - `Mesh.get_aabb()` is now exposed to scripting.
    - `PhysicalBone.apply_impulse()` and `PhysicalBone.apply_central_impulse()` methods to push ragdolls around.
    - `ProjectSettings.load_resource_pack()` now features an optional `replace_files` argument (defaulting to `true`), which controls whether the loaded resource pack can override existing files in the virtual filesystem.
    - `SpinBox.apply()` method to evaluate and apply the expression in the SpinBox's value immediately.
    - `ConfigFile.erase_section_key()` method to remove a single key from a ConfigFile.
    - `OS.execute()` now returns the process' exit code when blocking mode is enabled.
    - `OS.is_window_focused()` method that returns `true` if the window is currently focused.
    - Tracking the focus state manually using `NOTIFICATION_WM_FOCUS_IN` and `NOTIFICATION_WM_FOCUS_OUT` is no longer needed to achieve this.
    - `OS.low_processor_mode_sleep_usec` is now exposed as a property.
    - This makes it possible to change its value at runtime, rather than just defining it once in the Project Settings.
    - `SceneTree.quit()` now accepts an optional argument with an exit code.
    - If set to a value greater than or equal to 0, it will override the `OS.exit_code` property.
    - `VisualServer.get_video_adapter_name()` and `VisualServer.get_video_adapter_vendor()` methods to retreive the user's graphics card model and vendor.
    - `VisualServer.multimesh_create()` is now exposed to scripting.
    - Ability to override how scripted objects are converted to strings by defining a `_to_string()` method.
    - Export hints for 2D and 3D physics/render layers.
    - Editor plugins can now add new tabs to the Project Settings.
    - Standalone ternary expression warning in GDScript.
    - Variable shadowing warning in GDScript.
    - Will be displayed if:
    - a block variable shadows a member variable,
    - a subclass variable shadows a member variable,
    - a function argument shadows a member variable.
    - Script reflection methods are now exposed to GDScript.
    - See `Script.get_script_property_list()`, `Script.get_script_method_list()`, `Script.get_script_signal_list()`, `Script.get_script_constant_map()` and `Script.get_property_default_value()`.
    - `randfn(mean, deviation)` method to generate random numbers following a normal Gaussian distribution.
    - Ability to read the standard error stream when using `OS.execute()` (disabled by default).
    - Option to disable boot splash filtering (nearest-neighbor interpolation).
    - The GridMap editor now offers a search field and size slider.
    - DynamicFont resources now have a thumbnail in the editor.
    - Minimap in the script editor.
    - Bookmarks in the script editor for easier code navigation.
    - Filter search box for the script list and member list.
    - Singletons and `class_name`-declared classes are now highlighted with a separate color in the script editor.
    - The editor help now displays class properties' default and overridden values.
    - The script editor's Find in Files dialog can now search in user-defined file types (`editor/search_in_file_extensions` in the Project Settings).
    - The script editor search now displays the number of matches.
    - The script editor search now selects the current match for easier replacing.
    - "Evaluate Expression" contextual option in the script editor.
    - This option evaluates the selected expression and replaces it (e.g. `2 + 2` becomes `4`).
    - Autocompletion support for `change_scene()`.
    - Ability to skip breakpoints while debugging.
    - Drag-and-drop support in the TileSet editor.
    - Ability to attach scripts to nodes by dragging a name from the script list to a node in the scene tree.
    - Icons are now displayed next to code completion items, making their type easier to distinguish.
    - "Ignore" flag to ignore specific tiles when autotiling in the TileMap editor.
    - Keyboard shortcuts to rotate tiles in the TileMap editor.
    - Default shortcuts are <kbd>A</kbd> (rotate left), <kbd>S</kbd> (rotate right), <kbd>X</kbd> (flip horizontally), <kbd>Y</kbd> (flip vertically).
    - Ability to keep a node's local transform when reparenting it by holding <kbd>Shift</kbd>.
    - Basis constants `IDENTITY`, `FLIP_X`, `FLIP_Y`, `FLIP_Z`.
    - Ability to create sprite frames in AnimatedSprite from a sprite sheet.
    - `frame_coords` property in Sprite and Sprite3D to set/get the coordinates of the frame to display from the sprite sheet.
    - `billboard` property in Sprite3D.
    - Reimplemented support for editing multiple keys at once in the animation editor.
    - Support for FPS snapping in the Animation editor.
    - Autokeying in the Animation editor.
    - Keyframes will be created automatically when translating, rotating or scaling nodes if a track exists already.
    - Keys must be inserted manually for the first time.
    - AnimationNodeBlendTreeEditor improvements.
    - Ability to exclude multiple selected nodes at once.
    - Context menu to add new nodes (activated by right-clicking).
    - The AnimationPlayer Call Method mode is now configurable.
    - Method calls can be "deferred" or "immediate", "deferred" being the default.
    - OccluderPolygon2D is now draggable in the editor.
    - The tooltip position offset is now configurable.
    - The default cursor used when hovering RichTextLabels can now be changed.
    - "Dialog Autowrap" property in AcceptDialog to wrap the label's text automatically.
    - The 2D editor's panning shortcut can now be changed.
    - The shortcuts to quit the editor can now be changed.
    - Support for emission masks in CPUParticles2D.
    - `direction` property in CPUParticles and ParticlesMaterial.
    - `lifetime_randomness` property in CPUParticles and ParticlesMaterial.
    - CPUParticles now uses a different gizmo icon to distinguish them from Particles.
    - "Restart" button to restart particle emission in the editor.
    - AnimatedSprites' animations can now be played backwards.
    - TextureRects can now have their texture flipped horizontally or vertically.
    - StyleBoxFlat shadows can now have an offset.
    - StyleBoxFlat now computes UV coordinates for its `canvas_item` vertices, which can be used in custom shaders.
    - Profiler data can now be exported to a CSV file.
    - The 2D polygon editor now displays vertex numbers when hovering vertices.
    - RectangleShapes now have a third handle to drag both axes at once.
    - Global class resources are now displayed in the Resource property inspector.
    - Double-clicking an easing property in the inspector will now make the editor display a numeric field.
    - This makes it easier to enter precise values for properties such as light attenuation.
    - `interface/editor/default_float_step` editor setting to configure floating-point values' default step in the Inspector.
    - Audio buses are now stylized to look like boxes that can be dragged.
    - The default audio bus layout file path can now be changed in the Project Settings.
    - The LineEdit and TextEdit controls now display their contextual menu when pressing the <kbd>Menu</kbd> key.
    - `shortcut_keys_enabled` and `selecting_enabled` LineEdit and TextEdit properties to disable keyboard shortcuts and selecting text.
    - The LineEdit "disabled" font color can now be changed.
    - The TextEdit "readonly" font color can now be changed.
    - LineEdit can now have its `right_icon` set in scripts.
    - The `nine_patch_stretch` TextureProgress property now enables stretching when using a radial fill mode.
    - Support for loading and saving encrypted files in ConfigFile.
    - `get_path()` and `get_path_absolute()` are now implemented in FileAccessEncrypted.
    - "Disabled" attenuation model for AudioStreamPlayer3D, making the sound not fade with distance while keeping it positional.
    - AudioEffectPitchShift's FFT size and oversampling are now adjustable.
    - TextEdit's tab drawing and folding is now exposed to GDScript.
    - Orphan node monitor in the Performance singleton.
    - Counts the number of nodes that were created but aren't instanced in the scene tree.
    - Ability to change eye height in VR.
    - CSV files can now be imported as non-translation files.
    - Scene resources such as materials can now be imported as `.tres` files.
    - Support for importing 1-bit, 4-bit and 8-bit BMP files.
    - Size dimensions must be a multiple of 8 for 1-bit images and 2 for 4-bit images.
    - `use_lld=yes` flag to link with [LLD](https://lld.llvm.org/) on Linux when compiling with Clang.
    - This results in faster iteration times when developing Godot itself or modules.
    - `use_thinlto=yes` flag to link with [ThinLTO](https://clang.llvm.org/docs/ThinLTO.html) when using Clang.
    - Multicast support in PacketPeerUDP.
    - `NetworkedMultiplayerEnet.server_relay` property to disable server relaying.
    - This can be used to increase security when building a fully-authoritative server.
    - Automatic timeout for TCP connections (defaults to 30 seconds, can be changed in the Project Settings).
    - `HTTPRequest.timeout` property (defaults to 0, which is disabled).
    - `HTTPRequest.download_chunk_size` property.
    - This value can be adjusted to reduce the allocation overhead and file writes when downloading large files.
    - The default value was increased for faster downloads (4 KB → 64 KB).
    - WebSocket improvements.
    - Support for SSL in WebSocketServer.
    - WebSocketClient can now use custom SSL certificates (except on HTML5).
    - WebSocketClient can now define custom headers.
    - The editor now features a built-in Web server for testing HTML5 projects.
    - Button to remove all missing projects in the Project Manager.
    - Reimplemented support for embedding project data in the PCK file.
    - Ability to take editor screenshots by pressing <kbd>Ctrl + F12</kbd>.
    - Editor plugins can now set the current active editor as well as toggle the distraction-free mode.
    - **Android:** [Support for adaptive icons.](https://docs.godotengine.org/en/latest/getting_started/workflow/export/exporting_for_android.html#providing-launcher-icons)
    - All icon densities are now generated automatically by the exporter.
    - Only 3 images now need to be supplied to support all icon formats and densities (legacy icon, adaptive foreground, adaptive background).
    - **Android:** Support for the Oculus Mobile SDK.
    - **Android:** Support for requesting permissions at runtime.
    - **Android:** `NOTIFICATION_APP_PAUSED` and `NOTIFICATION_APP_RESUMED` notifications are now emitted when the app is paused and resumed.
    - **Android:** Support for pen input devices.
    - **Android/iOS:** Support for vibrating the device.
    - [**HTML5:** Partial clipboard support.](https://github.com/godotengine/godot/pull/29298)
    - **iOS:** Support for [ARKit](https://developer.apple.com/augmented-reality/).
    - **iOS:** `OS.get_model_name()` now returns a value with the device name.
    - **iOS:** The Home indicator is now hidden by default to avoid being in the way of the running project.
    - It can be restored in the Project Settings.
    - **Windows:** Ability to toggle the console window in the Editor Settings.
    - **Windows:** Project setting to enable Vsync using the compositor (DWM), disabled by default.
    - On some hardware, this may fix stuttering issues when running a project in windowed mode.
    - **Windows:** Support for code signing using `signtool` on Windows and `osslsigncode` on other platforms.
    - **Windows:** Support for using Clang and ThinLTO when compiling using MinGW.
    - **Windows/macOS:** `OS.set_native_icon()` method to set an `.ico` or `.icns` window/taskbar icon at runtime.
    - **Windows/macOS/X11:** Support for graphic tablet pen pressure and tilt in InputEventMouseMotion.
    - **macOS:** LineEdit now supports keyboard shortcuts commonly available on macOS.
    - **macOS:** Multiple instances of the editor can now be opened at once.
    - **macOS:** Recent and favorite projects are now listed in the project manager dock menu.
    - **macOS:** The list of open scenes is now displayed in the editor dock menu.
    - **macOS:** Support for modifying global and dock menus.
    - **macOS:** Improved support for code signing when exporting projects.
    - **macOS:** Support for defining camera and microphone usage descriptions when exporting a project.
    - **macOS/X11:** [A zsh completion file for the editor is now available.](https://github.com/godotengine/godot/blob/master/misc/dist/shell/_godot.zsh-completion)
    - **X11:** The instance PID is now set as the `_NET_WM_PID` window attribute, so that external programs can easily access it.
    - **Mono:** Support for exporting to Android and HTML5.
    - **Mono:** Support for using Rider as an external editor.
    - **Mono:** Support for attaching external profilers like dotTrace using the `MONO_ENV_OPTIONS` environment variable.
    - **Mono:** New DynamicGodotObject class to access dynamic properties from scripts written in GDScript.
    - **Mono:** Support for resource type hints in exported arrays.
    - **Mono:** New `mono/unhandled_exception_policy` project setting to keep running after an unhandled exception.
    - [**Mono:** New Godot constants to conditionally react to system variables at compile-time.](https://github.com/godotengine/godot/pull/28786)
    - **Mono:** Support for Visual Studio 2019's MSBuild.
    #### Editor

    - **macOS:** More built-in mouse cursors are now exposed (such as diagonal resize cursors).
    - **macOS:** Support for building Godot with Clang sanitizers.

    #### Rendering

    - Vulkan renderer.

    ### Changed

    - Tween and Timer now display an error message if they are started without being added to the scene tree first.
    - Tweaked Timer's wait time property hint to allow values with 3 decimals and above 4096.
    - Functions called from a signal can no longer disconnect the node from the signal they're connected to (unless using `call_deferred()`).
    - Tabs and space indentation can no longer be mixed in the same GDScript file.
    - Each file must now use only tabs or spaces for indentation (not both).
    - The "Trim" and "Normalize" WAV import options are now disabled by default.
    - This makes the default behavior more consistent with Ogg import.
    - Ogg samples now have an icon in the editor, like WAV samples.
    - Camera2D drag margins are now disabled by default.
    - If porting a project from Godot 3.1 where drag margins were used, these must be enabled manually again.
    - `Camera.project_position()` now requires a second `depth` argument to determine the distance of the point from the camera.
    - To get the old behavior back, pass the Camera's `near` property value as the second argument.
    - `Skeleton.set_bone_global_pose()` was replaced by `Skeleton.set_bone_global_pose_override()`.
    - UDP broadcasting is now disabled by default and must be enabled by calling `set_broadcast_enabled(true)` on the PacketPeerUDP instance.
    - The editor and project manager now open slightly faster.
    - Improved the Project Manager user interface.
    - New, simpler design with more space available for the project list.
    - Improved reporting of missing projects.
    - The search field is now focused when starting the Project Manager if there is at least one project in the list.
    - The search field now searches in both the project name and path.
    - If the search term contains a `/`, the whole path will be used to match the search them. Otherwise, only the last path component will be searched in.
    - Refactored the Project Manager to be more efficient, especially with large project lists.
    - Images in the Project Manager and Asset Library are now resized with Lanczos filtering for a smoother appearance.
    - The editor now uses the font hinting algorithm that best matches the OS' default.
    - Hinting is set to "None" on macOS, and set to "Light" on Windows and Linux.
    - This can be changed in the Editor Settings.
    - The editor window dimming when a popup appears is now less intense (60% → 50%).
    - The animation was also removed as it made the editor feel sluggish at lower FPS.
    - Several editor menus have been reorganized for consistency and conciseness.
    - Undo/Redo now supports more actions throughout the editor.
    - Increased the height of the ItemList editor popup.
    - This makes it easier to edit large amounts of items.
    - Opening a folder in FileDialog will now scroll back to the top.
    - Folder icons in FileDialog can now be displayed with a different color using the `folder_icon_modulate` constant, making them easier to distinguish from files.
    - Folder icons in editor file dialogs are now tinted with the accent color.
    - Improved colors in the light editor theme for better readability and consistency.
    - Improved A* performance significantly by using a binary heap and OAHashMap.
    - Tweaked the AABB transform algorithm to be ~1.2 times faster.
    - Optimized the variant reference function, making complex scripts slightly faster.
    - Disabled high-quality voxel cone tracing by default.
    - This makes GIProbe much faster out of the box, at the cost of less realistic reflections.
    - Lowered the default maximum directional shadow distance (200 → 100).
    - This makes directional shadow rendering consistent between the editor and running project when using the default Camera node settings.
    - Tweaked the default depth fog maximum distance to be independent of the Camera's `far` value (0..100).
    - This makes fog display consistent between the editor and a running project.
    - Tweaked the default height fog values to be more logical (0..100 → 10..0).
    - This means height fog will be drawn from top-to-bottom, instead of being drawn from bottom-to-top.
    - Significantly improved SSAO performance by using a lower sample count.
    - SSAO now uses 3×3 blurring by default, resulting in less visible noise patterns.
    - When "Keep 3D Linear" is enabled, colors are no longer clamped to [0, 1] when using Linear tonemapping.
    - This allows rendering HDR values in floating-point texture targets for further processing or saving HDR data into files.
    - The lightmap baker now calculates lightmap sizes dynamically based on surface area.
    - Improved 3D KinematicBody performance and reliability.
    - Orbiting in the 3D editor can now be done while holding <kbd>Alt</kbd>, for better compatibility with graphics tablets.
    - Keys and actions are now released when the window loses focus.
    - Tweens can now have a duration of 0.
    - Particles and CPUParticles' Sphere emission shape now uses an uniform density sphere.
    - `Viewport.size_override_stretch` is now exposed as a property (rather than just setter/getter methods).
    - One-click deploy to Android now requires just one click if only one device is connected.
    - The Project Manager will now infer a project name from the project path if the name was left to the default value.
    - The WebSockets implementation now uses the smaller [wslay](https://tatsuhiro-t.github.io/wslay/) library instead of libwebsockets.
    - Box selections in the editor now use a subtle outline for better visibility.
    - Most 2D lines are now antialiased in the editor.
    - CheckButtons now use a simpler design in the editor.
    - Messages originating from the editor are now faded in the editor log.
    - This makes messages printed by the project stand out more.
    - Folding arrows in the editor inspector are now displayed at the left for consistency with other foldable elements.
    - Hovering or dragging guides in the 2D editor will now turn the cursor into a "resizing" shape.
    - The editor update spinner is now hidden by default.
    - It can be enabled again in the Editor Settings.
    - The "Update Always" option is now editor-wide instead of being project-specific.
    - ColorPicker, OptionButton and MenuButton now use toggle mode, making them appear pressed when clicked.
    - The ColorPicker preview was moved below the picker area to be closer to the sliders.
    - Increased the Light2D height range from -100..100 to -2048..2048.
    - Lower and higher values can be entered manually too.
    - Decreased the `rotation_degrees` range in various nodes to -360..360 to be easier to adjust using the slider.
    - Lower and higher values can still be entered manually, which is useful for animation purposes.
    - The default RichTextLabel color is now `#ffffff`, matching the default Label color for better consistency.
    - Label's `visible_characters` property now takes spaces into account to be consistent with RichTextLabel.
    - SpinBoxes now calculate the entered value using the Expression class.
    - For example, writing `2 + 2` in a SpinBox then pressing Enter will result in `4`.
    - Saved resources no longer contain dependency indices and metadata such as node folding, resulting in more VCS-friendly files.
    - The script editor's line length guideline is now enabled by default.
    - The script editor state (such as breakpoints or the current line) is now preserved across editor sessions.
    - The script editor's "Auto Brace Complete" setting is now enabled by default.
    - The scripts panel toggle button is now located at the bottom-left of the script editor (instead of the File menu).
    - Editor plugins can now be enabled without having an init script defined.
    - Custom nodes added by plugins now have a translucent script icon in the scene tree dock.
    - `EditorInterface.get_current_path()` to get the full path currently displayed in the FileSystem dock in an editor plugin.
    - Copy constructors are now allowed for built-in types in GDScript.
    - This allows constructs such as `Vector2(Vector2(12, 34))`, which may be useful to simplify code in some cases.
    - `weakref(null)` is now allowed in GDScript.
    - This makes checking for a valid reference more concise, as `if my_ref.get_ref()` is now sufficient (no need for `if my_ref and my_ref.get_ref()`).
    - The number of signal connections and groups is now displayed in a tooltip when hovering the associated buttons in the scene tree dock.
    - The right mouse button can now be used to pan in the 2D editor.
    - This is to improve usability when using a touchpad.
    - The middle mouse button can still be used to pan in the 2D editor.
    - Zooming is now allowed while panning in the 2D editor.
    - When the "Scroll To Pan" editor setting is enabled, the 2D editor can now be zoomed in by holding <kbd>Ctrl</kbd> and scrolling the mouse wheel.
    - Zoom percentages in the 2D editor are now relative to the editor scale if the editor scale is higher than 100%.
    - The 2D editor now displays the current zoom percentage.
    - The zoom percentage can be clicked to reset the zoom level to 100%.
    - Improved sorting options in the Asset Library.
    - Images now load faster in the Asset Library.
    - A loading placeholder is now displayed while icons are loading in the Asset Library.
    - Images failing to load in the Asset Library display a "broken file" icon.
    - Improved the Asset Library page loading transitions.
    - Tweaked the Asset Library detail page layout for better readability.
    - Audio mixer faders now use a non-linear algorithm to better fit human hearing.
    - Tooltips now appear faster when hovering elements in the editor (0.7 seconds → 0.5 seconds).
    - Increased the low-processor usage mode's default maximum refresh rate (125 FPS → 144 FPS).
    - This makes the editor feel slightly smoother on 144 Hz displays.
    - Tree scrolling when dragging now uses a larger drag margin, making drag-and-drop more convenient.
    - Holding <kbd>Ctrl</kbd> now toggles snapping in GraphEdit.
    - Improved the timeline's appearance in the animation editor.
    - Improved snapping in the animation editor.
    - Snapping can be toggled temporarily by holding the <kbd>Ctrl</kbd> key.
    - Snapping can be made more precise by holding the <kbd>Shift</kbd> key.
    - Timeline snapping is now toggled by the Snap setting (like when moving keyframes).
    - Keyframes are now easier to select in the animation editor.
    - Selected keyframes now appear slightly larger in the animation editor.
    - Boolean and color keyframe icons are now aligned to other keyframes in the animation editor.
    - The Animation editor's line widths are now resized to match the editor scale.
    - BPTC compression is now available for all HDR image formats.
    - `Image.save_exr()` to save an image in EXR format, which supports high bit depths.
    - Improved path and polygon editors.
    - New handle icons for path and polygon points.
    - Smooth path point and curve tangents now use different icons to be distinguished from sharp points.
    - Tangent lines are now gray in the Path2D and Path editors.
    - Path2D lines are now antialiased.
    - Increased the TileSet and polygon UV editor's maximum zoom levels (400% → 1600%).
    - Decreased the maximum allowed StyleBoxFlat corner detail (128 → 20).
    - This prevents slowness and glitches caused by using overly detailed corners.
    - 3D collision shapes and RayCasts are now drawn in gray when disabled.
    - Improved RayCast2D and one-way collision drawing.
    - Disabled RayCast2Ds are now displayed in gray.
    - One-way collision arrows are now orange by default, making them easier to distinguish them from RayCast2Ds.
    - Tweaked RayCast2D and one-way collision line shapes to look more like arrows.
    - Improved rendering in the curve editor.
    - The grid is now rendered correctly when using a light theme.
    - The main line and edge line colors have been swapped for better visibility.
    - Tangent line widths are now resized to match the editor scale.
    - Improved rendering in the performance monitor.
    - Dark colors are now used on light backgrounds for better visibility.
    - Graph lines are now thinner and opaque.
    - Graph line widths are now resized to match the editor scale.
    - Rounded values now display trailing zeroes to make their precision clearer.
    - Some TileMap editor options were moved to the toolbar.
    - The TileMap editor now displays coordinate information in the 2D viewport's bottom-left corner.
    - This fixes the TileMap editor width changing when hovering tiles in a small window.
    - Brackets are now only inserted when necessary when autocompleting methods in the script editor.
    - Improved dialogs when saving or removing an editor layout.
    - Whitespace-only selections no longer cause the script editor to highlight all occurrences.
    - Saving a script will now add a newline at the end of file if none was present already.
    - Reorganized sections in the editor help to be in a more logical order.
    - The editor help now uses horizontal margins if the screen is wide enough.
    - This makes sure lines keep a reasonable length for better readability.
    - Increased line spacing in the editor help and asset library descriptions.
    - The editor help now displays bold text using a bold font (instead of using a monospace font).
    - The editor help now displays code using a slightly different color to be easier to distinguish.
    - The editor help now displays types after parameter names to follow the GDScript static typing syntax.
    - Editor help is now accessed using <kbd>Shift + F1</kbd>, for consistency with other applications.
    - Contextural help is now accessed using <kbd>Alt + F1</kbd> to accommodate for this change.
    - The script editor's Find in Files dialog is now always available, even when no script is opened.
    - Pressing <kbd>Shift + Enter</kbd> in the script editor Find dialog will now go to the previous match.
    - Improved the node deletion confirmation message.
    - If there is only one node to delete, its name is displayed in the message.
    - If there is more than one node to delete, the number of nodes to delete is displayed.
    - Improved the "Snap Object to Floor" functionality in the 3D editor.
    - An error message is now displayed if no nodes could be snapped.
    - Increased the maximum snapping height (10 → 20).
    - Increased the maximum snapping tolerance (0.1 → 0.2).
    - 2D/3D selections, rotations and selected texts are now highlighted with the editor theme's accent color.
    - 3D light gizmos are now tinted using the light's color, making navigation easier while using the unshaded display mode.
    - Improved the 3D light and AudioStreamPlayer3D gizmos to better represent their depth in the 3D world.
    - Tweaked the 3D manipulator gizmo's colors for better visibility.
    - Tweaked the 2D and 3D axis colors for consistency with gizmo colors.
    - Increased the default 3D manipulator gizmo opacity (0.2 → 0.4).
    - The multiline text editor popup dialog's width is now capped on large displays.
    - This prevents lines from becoming very long, which could hamper text readability.
    - Non-printable escape characters are now stripped when pasting text into a LineEdit.
    - The TextEdit caret color now matches the default font color, making it easier to see.
    - Empty exported NodePath properties now return `null` instead of `self`.
    - Built-in scripts are no longer allowed to use `class_name` as it wasn't working properly.
    - The second parameter of `substr()` is now optional and defaults to `-1`.
    - More editor actions can now have shortcuts assigned (such as Revert Scene or Export).
    - The project export path may now be written in a relative path.
    - Directories will be created recursively if the target directory doesn't exist.
    - Items in the FileSystem dock can now be deselected by clicking empty space.
    - "Set as Main Scene" context option for scenes in the FileSystem dock.
    - The unused class variable GDScript warning is now disabled by default due to false positives.
    - Warning-ignore comments now allow whitespace after the `#` character.
    - Improved error reporting in the Particles emission point creation dialog.
    - The number of warnings and errors that can be received in the remote debugger is now capped per second rather than per frame.
    - The default limit is 100 errors and 100 warnings per second, making it possible for the script editor to report up to 100 warnings before having messages hidden.
    - UTF-8 characters are now supported in input action names.
    - All platforms now use the `custom_template` property in each export preset to store the path to the custom export template (instead of `custom_package` for some platforms).
    - Tween methods' `trans_type` and `ease_type` arguments are now optional, defaulting to `TRANS_LINEAR` and `EASE_IN_OUT` respectively.
    - `PCKPacker.pck_start()` and `PCKPacker.flush()`'s `alignment` and `verbose` arguments (respectively) are now optional, defaulting to `0` and `false`.
    - Exported PCK files now contain the Godot patch version in their header.
    - This can be used by external tools to detect the Godot version more accurately.
    - Exporting a project PCK or ZIP from the command line must now be done with the new `--export-pack` command-line argument.
    - This was done to remove the ambiguity when exporting a project to macOS from the command line.
    - Updated FreeType to 2.10, which changes how font metrics are calculated.
    - This may affect the appearance of some Controls, see [this issue](https://github.com/godotengine/godot/issues/28335) for details.
    - The SCons build system now automatically detects the host platform.
    - `platform=<platform>` is no longer required when compiling for the host platform.
    - `platform=list` can be used to list the supported target platforms.
    - **Windows:** Drive letters in file paths are now capitalized.
    - **macOS:** <kbd>Control + H</kbd> and <kbd>Control + D</kbd> in TextEdit now delete the character at the left and right of the cursor (respectively).
    - **macOS:** <kbd>Command + Left</kbd> in TextEdit now moves the cursor to the first non-whitespace character.
    - **macOS:** Non-resizable windows are now allowed to enter fullscreen mode.
    - **macOS:** The editor's title bar now uses dark mode on Mojave.
    - **X11:** `OS.set_window_postion()` now takes window decorations into account.
    #### Core

    ### Removed
    - Increased the maximum number of OpenSimplexNoise octaves (6 → 9).

    - Unused Panel `panelf` and `panelnc` styles.
    - thekla_atlas dependency, as light baking now relies on [xatlas](https://github.com/jpcy/xatlas) for UV unwrapping.
    - Rating icons in the Asset Library, as this feature isn't implemented in the backend.
    - Some editor languages are no longer available due to missing support for RTL and text shaping in Godot:
    - Affected languages are Arabic, Bengali, Persian, Hebrew, Hindi, Malayalam, Sinhalese, Tamil, Telugu and Urdu.
    - These languages will be re-added once Godot supports RTL and text shaping.
    - **Android:** ARMv6 support.
    - **iOS:** ARMv7 support.
    - ARMv7 export templates can still be compiled from source to support the iPhone 5 and older.
    #### Editor

    - Improved the Video RAM debugger usability.
    - The Video RAM tab is now refreshed automatically when switching to it.
    - CSV profiler measures can now be saved anywhere on the filesystem, not just in the project folder.
    - Times are now displayed as milliseconds in the profiler and performance monitors (instead of seconds).
    - Improved the batch rename dialog usability and design consistency.
    - Clarified error messages when there are regular expression errors.
    - Optimized editor icon generation to speed up editor startup.
    - The number of replaced results now appears in place of the matches counter when replacing text in the script editor.

    ### Removed

    ### Fixed

    - The Project Manager now remembers the sorting option that was previously set.
    - The editor and project manager now have a minimum window size defined.
    - This prevents controls from overlapping each other by resizing the window to a very small size.
    - Fixed radiance map generation, resulting in improved 3D performance and visual quality.
    - Fixed issues with PBR environment mapping.
    - Materials should now look closer to what they look like in Substance Designer/Painter.
    - Depth of field now affects transparent objects.
    - Radiance is now generated when using a clear color sky.
    - Contact shadows no longer display when shadow casting is disabled.
    - Larger data types can now be constructed by swizzling in the shader language.
    - For instance, `vec2 test2 = vec2(0.0, 1.0); vec3 test3 = test2.xxx;` now works as in GLSL.
    - The `AMBIENT_LIGHT_DISABLED` and `SHADOWS_DISABLED` flags now work when using the GLES2 renderer.
    - The Keep background mode now works when using the GLES2 renderer.
    - Several fixes to the GLES2 renderer:
    - Fixed transparency order.
    - Fixed vertex lighting being too bright.
    - Fixed occasional light flickering.
    - Fixed shadows cast from transparent materials.
    - Fog is no longer computed on unshaded materials.
    - This matches the GLES3 renderer's behavior.
    - GLES2 shader uniforms now use `highp` precision by default.
    - This prevents linking issues on some Android devices.
    - Negative OmniLights and SpotLights now work as expected.
    - The 3D editor's View Information pane now displays statistics correctly when using the GLES2 renderer.
    - Textures compressed with ETC now support transparency by falling back to RGBA4444 or LA8.
    - Alternate display modes are now marked as disabled in the editor when using the GLES2 renderer, as these are only supported when using GLES3.
    - Fixed several inconsistencies between Particles and CPUParticles.
    - Fixed particles scale randomization.
    - Particles are now set to emit correctly when restarting.
    - CheckBox and CheckButton now use the `check_vadjust` custom constant to adjust the icon Y position as intended.
    - Fixed various issues with tab-related icons.
    - Fixed issues in WebM colorspace corrections, resulting in better color output.
    - CSG is now taken into account when generating navigation meshes.
    - Curve2D and Curve3D interpolated values now behave as expected.
    - Numeric slider grabbers in the editor inspector now update when scrolling using the mouse wheel.
    - Scene modifications are no longer lost when renaming a file in the FileSystem dock.
    - "Show in FileSystem" now clears the current search, so that the selected item can be seen immediately.
    - LineEdit and TextEdit's context menus no longer display editing options if they are read-only.
    - SpinBox mouse events are now correctly triggered by its LineEdit part.
    - Per-word navigation in LineEdit and TextEdit now handles UTF-8 characters correctly.
    - LineEdit placeholders, Tabs' names and WindowDialog titles now react correctly to translation changes.
    - Fixed UI navigation when using gamepad analog sticks.
    - Buttons' state is now reset when they exit the scene tree.
    - This prevents them from lingering in a "hovered" or "pressed" state.
    - Tooltips now disappear when hiding the node they belong to.
    - Encoded packet flags are no longer sent in the ENet multiplayer protocol, as ENet itself already sends that data.
    - This saves 4 bytes per packet.
    - Audio trimming is now less aggressive, cutting at -50 dB instead of -30 dB.
    - Audio trimming now has a small fade-out period, preventing audible pops.
    - Audio mix rate and output latency settings are now consistently applied on all platforms.
    - Fixed multichannel panning for AudioStreamPlayer3D.
    - Opening a recent built-in script will now load the associated scene automtaically since doing so is required to edit the script.
    - Declaring a class with `class_name` that has the same name as a singleton will now display a clearer error message.
    - `script` is no longer allowed as a member variable name in GDScript, as that conflicts with the internal `script` property used by Object.
    - Assigning a variable with a function index will no longer evaluate the function twice.
    - For instance, doing `a[function()] += 1` will no longer evaluate `function()` twice.
    - If the function has side effects, this may change the resulting program behavior.
    - GDScript type checks are now enabled in release export templates.
    - The Label font shadow now draws the font outline as well (if the base font has one).
    - `Font.draw_char()` now draws the font outline as well (if the base font has one).
    - The editor no longer redraws continuously when selecting a Control in a Container.
    - Added some missing feature tags to the Project Settings "Override For..." menu.
    - The `low_processor_mode_sleep_usec` project setting no longer affects the editor.
    - Typed arrays and dictionaries no longer have their values shared across instances.
    - `self` and object types can now be indexed as a dictionary again (like in Godot 3.0 and prior).
    - Fixed `to_lower()` conversion with Cyrillic characters.
    - The Find in Files replace dialog now allows empty replacement texts.
    - The bottom panel no longer disappears when opening the theme editor on small displays.
    - The script editor's color picker now changes only one color if multiple colors are present on the same line.
    - The script editor's line length guideline is now drawn behind text.
    - The script editor's line length guideline is now drawn at the correct position when font hinting is disabled.
    - The script editor now automatically indents a line if the previous one ends with `[` or `(`.
    - This makes it possible to wrap arrays or function declarations/calls without pressing <kbd>Tab</kbd> every line.
    - Fixed autocompletion in the script editor.
    - The script editor can now autocomplete enum values.
    - The script editor can now autocomplete node paths starting with `$"` or `$'`.
    - Custom script editor templates can now use type hints.
    - Shift operators with a number not between 0 and 63 (inclusive) will now result in a compile-time error in GDScript.
    - Warnings no longer count towards the "Too many errors!" message.
    - AnimationTrackEdit now displays invalid value keys again (as it did in 3.0).
    - Fixed the display of function/audio/animation tracks in the blend tree animation filter.
    - The editor shortcuts menu no longer displays all unassigned shortcuts when searching for a substring of "None".
    - The editor's performance monitor now displays memory/file sizes larger than 2 GB correctly.
    - The editor debugger now displays keyboard shortcuts when hovering the "Step Into", "Step Over", "Break" and "Continue" buttons.
    - The editor debugger now always handles connections.
    - Subsequent connections will be dropped immediately to avoid locking.
    - Large rotation offset/snap values no longer appear to be cut off in the Configure Snap dialog.
    - Documentation tooltips in the editor now wrap to multiple lines correctly.
    - Locked 3D nodes are no longer selectable in the 3D viewport, matching the 2D editor's behavior.
    - All 3D gizmos now notify changes correctly, which means the inspector now displays up-to-date properties after using them.
    - The 3D manipulator gizmo's size is now capped at low viewport heights, preventing it from outgrowing the viewport's bounds.
    - The editor filesystem now refreshes on file changes if the project is located on an exFAT filesystem.
    - Fixed many cases of colors not changing correctly when switching the editor from a dark theme to a light theme (or vice versa) without restarting.
    - The Show in File Manager context menu option now works with files marked as favorite.
    - The random number generator's seed is now properly set up.
    - Antialiased and rounded StyleBoxFlat corners now handle different border widths correctly.
    - The StyleBox preview now accounts for shadows and content margins.
    - This fixes the preview going out of bounds in the inspector.
    - Text resources no longer contain an extraneous line break at the end of file.
    - Transform's `FLIP_Y` and `FLIP_Z` constants now work as expected.
    - Fixed importing BMP images.
    - The positional command-line argument is now only considered to be a scene path if it ends with `.scn`, `.tscn` or `.escn`.
    - This makes it possible to parse command-line arguments in a standard fashion (`--foo bar` now works, not just `--foo=bar`).
    - This also makes it possible to use file associations or drag-and-drop and have the positional argument parsed by the project.
    - The `--audio-driver` and `--video-driver` command-line arguments are now validated; an error message will be printed if an invalid value is passed.
    - The `--check-only` command-line argument now returns a non-zero exit code if an invalid script is passed using `--script`.
    - Exporting a project via the command-line now returns a non-zero exit code if an error occurred during exporting.
    - Console output is no longer colored when standard output isn't a TTY.
    - This prevents Godot from writing ANSI escape codes when redirecting standard output or standard error to a file.
    - **Android:** Gamepads are now correctly detected when the application starts.
    - **Android:** Fix some keyboards being detected as gamepads and not working as a result.
    - **Android:** The editor now detects if the device is connected using wireless `adb` and will debug using Wi-Fi in this case.
    - **HTML5:** Fixed the pointer position on hiDPI displays.
    - **HTML5:** `OS.get_system_time_msec()` now returns the correct value like on other platforms.
    - **iOS:** On iOS 11 or later, gestures near screen edges are now handled by Godot instead of the OS.
    - **Windows:** Line endings are now converted to CRLF when setting clipboard content.
    - **Windows:** Getting the path to the Downloads directory using `OS.get_system_dir()` now works correctly.
    - This fixes line endings being invisible when pasting into other applications.
    - **macOS:** `OS.get_real_window_size()` and `OS.set_window_size()` are now handled correctly on hiDPI displays.
    - **X11:** `OS.get_window_position()` now returns absolute coordinates.
    - **X11:** Fixed audio playing on the wrong speakers when using PulseAudio on 5.1 setups.
    - **X11:** `OS.set_window_maximized()` now gives up after 0.5 seconds.
    - This makes the editor no longer freeze on startup when using fvwm.
    #### GUI

    - Fixed OptionButton minimum size.
    - TabContainer is no longer too large when tabs are hidden.
  24. Calinou revised this gist Jan 21, 2020. 1 changed file with 47 additions and 2 deletions.
    49 changes: 47 additions & 2 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (3.2-dev at commit `f3c6c63b9`)
    ## [Unreleased] (3.2-dev at commit `d4ac0ca15`)

    ### Added

    @@ -71,6 +71,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Navigation gizmos are now updated after every new bake.
    - Support for skinning in 3D skeletons.
    - CameraServer singleton to retrieve images from mobile cameras or webcams as textures.
    - A crosshair is now displayed when using freelook in the 3D editor.
    - Project camera override button at the top of the 2D and 3D editors.
    - When enabled, the editor viewport's camera will be replicated in the running project.
    - RichTextLabel can now be extended with real-time effects and custom BBCodes.
    @@ -112,6 +113,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Support for `switch` statements in the shader language.
    - Support for `do {...} while (...)` loops in the shader language.
    - Unlike `while`, the expression in the `do` block will always be run at least once.
    - Support for hexadecimal number literals in the shader language.
    - Ported several GLES3 shader functions such as `round()` to GLES2.
    - `SHADOW_VEC` shader parameter to alter 2D shadow computations in custom shaders.
    - Filter search box in the remote scene tree dock.
    @@ -161,6 +163,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - `FRUSTUM` 3D camera mode to create tilted frustums for mirror or portal effects.
    - `Camera.project_position()` now accepts an optional `depth` parameter.
    - `CanvasItem.draw_rect()` now has `width` and `antialiased` properties to match `draw_line()`'s functionality.
    - `Engine.get_idle_frames()` and `Engine.get_physics_frames()` to get the number of idle and physics frame iterations since the project started.
    - Unlike `Engine.get_frames_drawn()`, `Engine.get_idle_frames()` will be incremented even if the render loop is disabled.
    - `Engine.get_physics_interpolation_fraction()` to get the fraction through the current physics tick at the time of the current frame.
    - This can be used to implement fixed timestep interpolation.
    - Support for shadow-to-opacity in 3D to render shadows in augmented reality contexts.
    @@ -189,12 +193,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - `Font.get_wordwrap_string_size()` method to return the rectangle size needed to draw a word-wrapped text.
    - `Camera.get_camera_rid()` method to retrieve a Camera's RID.
    - `Array.slice()` method to duplicate a subset of an Array and return it.
    - The GraphEdit box selection colors can now be changed by tweaking the `selection_fill` and `selection_stroke` theme items.
    - Toggleable HSV mode for ColorPicker.
    - ColorPicker properties to toggle the visibility and editability of presets.
    - The default ColorPicker mode (RGB, HSV, RAW) can now be changed in the Editor Settings.
    - ColorPicker now displays an indicator to denote "overbright" colors (which can't be displayed as-is in the preview).
    - Hovering a Color property in the editor inspector now displays a tooltip with the exact values.
    - `Color.transparent` constant (equivalent to `Color(1, 1, 1, 0)`).
    - `KinematicBody.get_floor_normal()` and `KinematicBody2D.get_floor_normal()` to retrieve the collided floor's normal.
    - `VehicleWheel.get_rpm()` method to retrieve a vehicle wheel's rotations per minute.
    - Per-wheel throttle, brake and steering in VehicleBody.
    - `GeometryInstance.set_custom_aabb()` to set a custom bounding box (used for view frustum culling).
    @@ -203,14 +209,21 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - `Mesh.get_aabb()` is now exposed to scripting.
    - `PhysicalBone.apply_impulse()` and `PhysicalBone.apply_central_impulse()` methods to push ragdolls around.
    - `ProjectSettings.load_resource_pack()` now features an optional `replace_files` argument (defaulting to `true`), which controls whether the loaded resource pack can override existing files in the virtual filesystem.
    - `SpinBox.apply()` method to evaluate and apply the expression in the SpinBox's value immediately.
    - `ConfigFile.erase_section_key()` method to remove a single key from a ConfigFile.
    - `OS.execute()` now returns the process' exit code when blocking mode is enabled.
    - `OS.is_window_focused()` method that returns `true` if the window is currently focused.
    - Tracking the focus state manually using `NOTIFICATION_WM_FOCUS_IN` and `NOTIFICATION_WM_FOCUS_OUT` is no longer needed to achieve this.
    - `OS.low_processor_mode_sleep_usec` is now exposed as a property.
    - This makes it possible to change its value at runtime, rather than just defining it once in the Project Settings.
    - `SceneTree.quit()` now accepts an optional argument with an exit code.
    - If set to a value greater than or equal to 0, it will override the `OS.exit_code` property.
    - `VisualServer.get_video_adapter_name()` and `VisualServer.get_video_adapter_vendor()` methods to retreive the user's graphics card model and vendor.
    - `VisualServer.multimesh_create()` is now exposed to scripting.
    - Ability to override how scripted objects are converted to strings by defining a `_to_string()` method.
    - Export hints for 2D and 3D physics/render layers.
    - Editor plugins can now add new tabs to the Project Settings.
    - Standalone ternary expression warning in GDScript.
    - Variable shadowing warning in GDScript.
    - Will be displayed if:
    - a block variable shadows a member variable,
    @@ -318,6 +331,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Reimplemented support for embedding project data in the PCK file.
    - Ability to take editor screenshots by pressing <kbd>Ctrl + F12</kbd>.
    - Editor plugins can now set the current active editor as well as toggle the distraction-free mode.
    - **Android:** [Support for adaptive icons.](https://docs.godotengine.org/en/latest/getting_started/workflow/export/exporting_for_android.html#providing-launcher-icons)
    - All icon densities are now generated automatically by the exporter.
    - Only 3 images now need to be supplied to support all icon formats and densities (legacy icon, adaptive foreground, adaptive background).
    - **Android:** Support for the Oculus Mobile SDK.
    - **Android:** Support for requesting permissions at runtime.
    - **Android:** `NOTIFICATION_APP_PAUSED` and `NOTIFICATION_APP_RESUMED` notifications are now emitted when the app is paused and resumed.
    @@ -342,6 +358,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - **macOS:** Support for modifying global and dock menus.
    - **macOS:** Improved support for code signing when exporting projects.
    - **macOS:** Support for defining camera and microphone usage descriptions when exporting a project.
    - **macOS/X11:** [A zsh completion file for the editor is now available.](https://github.com/godotengine/godot/blob/master/misc/dist/shell/_godot.zsh-completion)
    - **X11:** The instance PID is now set as the `_NET_WM_PID` window attribute, so that external programs can easily access it.
    - **Mono:** Support for exporting to Android and HTML5.
    - **Mono:** Support for using Rider as an external editor.
    @@ -355,17 +372,20 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    ### Changed

    - Tween and Timer now display an error message if they are started without being added to the scene tree first.
    - Tweaked Timer's wait time property hint to allow values with 3 decimals and above 4096.
    - Functions called from a signal can no longer disconnect the node from the signal they're connected to (unless using `call_deferred()`).
    - Tabs and space indentation can no longer be mixed in the same GDScript file.
    - Each file must now use only tabs or spaces for indentation (not both).
    - The "Trim" and "Normalize" WAV import options are now disabled by default.
    - This makes the default behavior more consistent with Ogg import.
    - Ogg samples now have an icon in the editor, like WAV samples.
    - Camera2D drag margins are now disabled by default.
    - If porting a project from Godot 3.1 where drag margins were used, these must be enabled manually again.
    - `Camera.project_position()` now requires a second `depth` argument to determine the distance of the point from the camera.
    - To get the old behavior back, pass the Camera's `near` property value as the second argument.
    - `Skeleton.set_bone_global_pose()` was replaced by `Skeleton.set_bone_global_pose_override()`.
    - UDP broadcasting is now disabled by default and must be enabled by calling `set_broadcast_enabled(true)` on the PacketPeerUDP instance.
    - The editor and project manager now open slightly faster.
    - Improved the Project Manager user interface.
    - New, simpler design with more space available for the project list.
    - Improved reporting of missing projects.
    @@ -381,6 +401,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The animation was also removed as it made the editor feel sluggish at lower FPS.
    - Several editor menus have been reorganized for consistency and conciseness.
    - Undo/Redo now supports more actions throughout the editor.
    - Increased the height of the ItemList editor popup.
    - This makes it easier to edit large amounts of items.
    - Opening a folder in FileDialog will now scroll back to the top.
    - Folder icons in FileDialog can now be displayed with a different color using the `folder_icon_modulate` constant, making them easier to distinguish from files.
    - Folder icons in editor file dialogs are now tinted with the accent color.
    @@ -421,6 +443,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - It can be enabled again in the Editor Settings.
    - The "Update Always" option is now editor-wide instead of being project-specific.
    - ColorPicker, OptionButton and MenuButton now use toggle mode, making them appear pressed when clicked.
    - The ColorPicker preview was moved below the picker area to be closer to the sliders.
    - Increased the Light2D height range from -100..100 to -2048..2048.
    - Lower and higher values can be entered manually too.
    - Decreased the `rotation_degrees` range in various nodes to -360..360 to be easier to adjust using the slider.
    @@ -430,12 +453,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - SpinBoxes now calculate the entered value using the Expression class.
    - For example, writing `2 + 2` in a SpinBox then pressing Enter will result in `4`.
    - Saved resources no longer contain dependency indices and metadata such as node folding, resulting in more VCS-friendly files.
    - The script editor's line length guideline is now enabled by default.
    - The script editor state (such as breakpoints or the current line) is now preserved across editor sessions.
    - The script editor's "Auto Brace Complete" setting is now enabled by default.
    - The scripts panel toggle button is now located at the bottom-left of the script editor (instead of the File menu).
    - Editor plugins can now be enabled without having an init script defined.
    - Custom nodes added by plugins now have a translucent script icon in the scene tree dock.
    - `EditorInterface.get_current_path()` to get the full path currently displayed in the FileSystem dock in an editor plugin.
    - Copy constructors are now allowed for built-in types in GDScript.
    - This allows constructs such as `Vector2(Vector2(12, 34))`, which may be useful to simplify code in some cases.
    - `weakref(null)` is now allowed in GDScript.
    - This makes checking for a valid reference more concise, as `if my_ref.get_ref()` is now sufficient (no need for `if my_ref and my_ref.get_ref()`).
    - The number of signal connections and groups is now displayed in a tooltip when hovering the associated buttons in the scene tree dock.
    @@ -444,6 +470,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The middle mouse button can still be used to pan in the 2D editor.
    - Zooming is now allowed while panning in the 2D editor.
    - When the "Scroll To Pan" editor setting is enabled, the 2D editor can now be zoomed in by holding <kbd>Ctrl</kbd> and scrolling the mouse wheel.
    - Zoom percentages in the 2D editor are now relative to the editor scale if the editor scale is higher than 100%.
    - The 2D editor now displays the current zoom percentage.
    - The zoom percentage can be clicked to reset the zoom level to 100%.
    - Improved sorting options in the Asset Library.
    @@ -498,6 +525,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Improved dialogs when saving or removing an editor layout.
    - Whitespace-only selections no longer cause the script editor to highlight all occurrences.
    - Saving a script will now add a newline at the end of file if none was present already.
    - Reorganized sections in the editor help to be in a more logical order.
    - The editor help now uses horizontal margins if the screen is wide enough.
    - This makes sure lines keep a reasonable length for better readability.
    - Increased line spacing in the editor help and asset library descriptions.
    @@ -516,6 +544,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Increased the maximum snapping height (10 → 20).
    - Increased the maximum snapping tolerance (0.1 → 0.2).
    - 2D/3D selections, rotations and selected texts are now highlighted with the editor theme's accent color.
    - 3D light gizmos are now tinted using the light's color, making navigation easier while using the unshaded display mode.
    - Improved the 3D light and AudioStreamPlayer3D gizmos to better represent their depth in the 3D world.
    - Tweaked the 3D manipulator gizmo's colors for better visibility.
    - Tweaked the 2D and 3D axis colors for consistency with gizmo colors.
    @@ -541,6 +570,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - All platforms now use the `custom_template` property in each export preset to store the path to the custom export template (instead of `custom_package` for some platforms).
    - Tween methods' `trans_type` and `ease_type` arguments are now optional, defaulting to `TRANS_LINEAR` and `EASE_IN_OUT` respectively.
    - `PCKPacker.pck_start()` and `PCKPacker.flush()`'s `alignment` and `verbose` arguments (respectively) are now optional, defaulting to `0` and `false`.
    - Exported PCK files now contain the Godot patch version in their header.
    - This can be used by external tools to detect the Godot version more accurately.
    - Exporting a project PCK or ZIP from the command line must now be done with the new `--export-pack` command-line argument.
    - This was done to remove the ambiguity when exporting a project to macOS from the command line.
    - Updated FreeType to 2.10, which changes how font metrics are calculated.
    @@ -581,6 +612,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Larger data types can now be constructed by swizzling in the shader language.
    - For instance, `vec2 test2 = vec2(0.0, 1.0); vec3 test3 = test2.xxx;` now works as in GLSL.
    - The `AMBIENT_LIGHT_DISABLED` and `SHADOWS_DISABLED` flags now work when using the GLES2 renderer.
    - The Keep background mode now works when using the GLES2 renderer.
    - Several fixes to the GLES2 renderer:
    - Fixed transparency order.
    - Fixed vertex lighting being too bright.
    @@ -592,6 +624,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - This prevents linking issues on some Android devices.
    - Negative OmniLights and SpotLights now work as expected.
    - The 3D editor's View Information pane now displays statistics correctly when using the GLES2 renderer.
    - Textures compressed with ETC now support transparency by falling back to RGBA4444 or LA8.
    - Alternate display modes are now marked as disabled in the editor when using the GLES2 renderer, as these are only supported when using GLES3.
    - Fixed several inconsistencies between Particles and CPUParticles.
    - Fixed particles scale randomization.
    - Particles are now set to emit correctly when restarting.
    @@ -619,6 +653,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Fixed multichannel panning for AudioStreamPlayer3D.
    - Opening a recent built-in script will now load the associated scene automtaically since doing so is required to edit the script.
    - Declaring a class with `class_name` that has the same name as a singleton will now display a clearer error message.
    - `script` is no longer allowed as a member variable name in GDScript, as that conflicts with the internal `script` property used by Object.
    - Assigning a variable with a function index will no longer evaluate the function twice.
    - For instance, doing `a[function()] += 1` will no longer evaluate `function()` twice.
    - If the function has side effects, this may change the resulting program behavior.
    - GDScript type checks are now enabled in release export templates.
    - The Label font shadow now draws the font outline as well (if the base font has one).
    - `Font.draw_char()` now draws the font outline as well (if the base font has one).
    - The editor no longer redraws continuously when selecting a Control in a Container.
    @@ -649,7 +688,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Subsequent connections will be dropped immediately to avoid locking.
    - Large rotation offset/snap values no longer appear to be cut off in the Configure Snap dialog.
    - Documentation tooltips in the editor now wrap to multiple lines correctly.
    - Locked 3D nodes are now unselectable in the 3D viewport, matching the 2D editor's behavior.
    - Locked 3D nodes are no longer selectable in the 3D viewport, matching the 2D editor's behavior.
    - All 3D gizmos now notify changes correctly, which means the inspector now displays up-to-date properties after using them.
    - The 3D manipulator gizmo's size is now capped at low viewport heights, preventing it from outgrowing the viewport's bounds.
    - The editor filesystem now refreshes on file changes if the project is located on an exFAT filesystem.
    @@ -662,8 +701,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Text resources no longer contain an extraneous line break at the end of file.
    - Transform's `FLIP_Y` and `FLIP_Z` constants now work as expected.
    - Fixed importing BMP images.
    - The positional command-line argument is now only considered to be a scene path if it ends with `.scn`, `.tscn` or `.escn`.
    - This makes it possible to parse command-line arguments in a standard fashion (`--foo bar` now works, not just `--foo=bar`).
    - This also makes it possible to use file associations or drag-and-drop and have the positional argument parsed by the project.
    - The `--audio-driver` and `--video-driver` command-line arguments are now validated; an error message will be printed if an invalid value is passed.
    - The `--check-only` command-line argument now returns a non-zero exit code if an invalid script is passed using `--script`.
    - Exporting a project via the command-line now returns a non-zero exit code if an error occurred during exporting.
    - Console output is no longer colored when standard output isn't a TTY.
    - This prevents Godot from writing ANSI escape codes when redirecting standard output or standard error to a file.
    - **Android:** Gamepads are now correctly detected when the application starts.
    - **Android:** Fix some keyboards being detected as gamepads and not working as a result.
    - **Android:** The editor now detects if the device is connected using wireless `adb` and will debug using Wi-Fi in this case.
  25. Calinou revised this gist Jan 21, 2020. 1 changed file with 32 additions and 13 deletions.
    45 changes: 32 additions & 13 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file.

    The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

    ## [Unreleased] (3.2-dev at commit `fc034be03`)
    ## [Unreleased] (3.2-dev at commit `f3c6c63b9`)

    ### Added

    @@ -200,11 +200,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - `GeometryInstance.set_custom_aabb()` to set a custom bounding box (used for view frustum culling).
    - `FuncRef.call_funcv()` to call a FuncRef with an array containing arguments.
    - In contrast to `FuncRef.call_func()`, only a single array argument is expected.
    - `Mesh.get_aabb()` is now exposed to scripting.
    - `PhysicalBone.apply_impulse()` and `PhysicalBone.apply_central_impulse()` methods to push ragdolls around.
    - `ProjectSettings.load_resource_pack()` now features an optional `replace_files` argument (defaulting to `true`), which controls whether the loaded resource pack can override existing files in the virtual filesystem.
    - `ConfigFile.erase_section_key()` method to remove a single key from a ConfigFile.
    - `OS.execute()` now returns the process' exit code when blocking mode is enabled.
    - `OS.low_processor_mode_sleep_usec` is now exposed as a property.
    - This makes it possible to change its value at runtime, rather than just defining it once in the Project Settings.
    - `VisualServer.multimesh_create()` is now exposed to scripting.
    - Ability to override how scripted objects are converted to strings by defining a `_to_string()` method.
    - Export hints for 2D and 3D physics/render layers.
    - Editor plugins can now add new tabs to the Project Settings.
    @@ -323,7 +326,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - [**HTML5:** Partial clipboard support.](https://github.com/godotengine/godot/pull/29298)
    - **iOS:** Support for [ARKit](https://developer.apple.com/augmented-reality/).
    - **iOS:** `OS.get_model_name()` now returns a value with the device name.
    - **iOS:** The Home indicator is now hidden by default to avoid being in the way of the running project.
    - It can be restored in the Project Settings.
    - **Windows:** Ability to toggle the console window in the Editor Settings.
    - **Windows:** Project setting to enable Vsync using the compositor (DWM), disabled by default.
    - On some hardware, this may fix stuttering issues when running a project in windowed mode.
    - **Windows:** Support for code signing using `signtool` on Windows and `osslsigncode` on other platforms.
    - **Windows:** Support for using Clang and ThinLTO when compiling using MinGW.
    - **Windows/macOS:** `OS.set_native_icon()` method to set an `.ico` or `.icns` window/taskbar icon at runtime.
    @@ -334,8 +341,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - **macOS:** The list of open scenes is now displayed in the editor dock menu.
    - **macOS:** Support for modifying global and dock menus.
    - **macOS:** Improved support for code signing when exporting projects.
    - **macOS:** Support for defining camera and microphone usage descriptions when exporting a project.
    - **X11:** The instance PID is now set as the `_NET_WM_PID` window attribute, so that external programs can easily access it.
    - **Mono:** Support for exporting to Android and HTML5.
    - **Mono:** Support for using Rider as an external editor.
    - **Mono:** Support for attaching external profilers like dotTrace using the `MONO_ENV_OPTIONS` environment variable.
    - **Mono:** New DynamicGodotObject class to access dynamic properties from scripts written in GDScript.
    - **Mono:** Support for resource type hints in exported arrays.
    - **Mono:** New `mono/unhandled_exception_policy` project setting to keep running after an unhandled exception.
    @@ -371,7 +381,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The animation was also removed as it made the editor feel sluggish at lower FPS.
    - Several editor menus have been reorganized for consistency and conciseness.
    - Undo/Redo now supports more actions throughout the editor.
    - The script editor's "Auto Brace Complete" setting is now enabled by default.
    - Opening a folder in FileDialog will now scroll back to the top.
    - Folder icons in FileDialog can now be displayed with a different color using the `folder_icon_modulate` constant, making them easier to distinguish from files.
    - Folder icons in editor file dialogs are now tinted with the accent color.
    @@ -397,7 +406,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Keys and actions are now released when the window loses focus.
    - Tweens can now have a duration of 0.
    - Particles and CPUParticles' Sphere emission shape now uses an uniform density sphere.
    - Viewport's `size_override_stretch` is now exposed as a property (rather than just setter/getter methods).
    - `Viewport.size_override_stretch` is now exposed as a property (rather than just setter/getter methods).
    - One-click deploy to Android now requires just one click if only one device is connected.
    - The Project Manager will now infer a project name from the project path if the name was left to the default value.
    - The WebSockets implementation now uses the smaller [wslay](https://tatsuhiro-t.github.io/wslay/) library instead of libwebsockets.
    @@ -422,6 +431,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - For example, writing `2 + 2` in a SpinBox then pressing Enter will result in `4`.
    - Saved resources no longer contain dependency indices and metadata such as node folding, resulting in more VCS-friendly files.
    - The script editor state (such as breakpoints or the current line) is now preserved across editor sessions.
    - The script editor's "Auto Brace Complete" setting is now enabled by default.
    - The scripts panel toggle button is now located at the bottom-left of the script editor (instead of the File menu).
    - Editor plugins can now be enabled without having an init script defined.
    - Custom nodes added by plugins now have a translucent script icon in the scene tree dock.
    - `EditorInterface.get_current_path()` to get the full path currently displayed in the FileSystem dock in an editor plugin.
    @@ -463,6 +474,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Smooth path point and curve tangents now use different icons to be distinguished from sharp points.
    - Tangent lines are now gray in the Path2D and Path editors.
    - Path2D lines are now antialiased.
    - Increased the TileSet and polygon UV editor's maximum zoom levels (400% → 1600%).
    - Decreased the maximum allowed StyleBoxFlat corner detail (128 → 20).
    - This prevents slowness and glitches caused by using overly detailed corners.
    - 3D collision shapes and RayCasts are now drawn in gray when disabled.
    - Improved RayCast2D and one-way collision drawing.
    - Disabled RayCast2Ds are now displayed in gray.
    @@ -518,12 +532,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Directories will be created recursively if the target directory doesn't exist.
    - Items in the FileSystem dock can now be deselected by clicking empty space.
    - "Set as Main Scene" context option for scenes in the FileSystem dock.
    - The unused class variable GDScript warning is now disabled by default due to false positives.
    - Warning-ignore comments now allow whitespace after the `#` character.
    - Improved error reporting in the Particles emission point creation dialog.
    - The number of warnings and errors that can be received in the remote debugger is now capped per second rather than per frame.
    - The default limit is 100 errors and 100 warnings per second, making it possible for the script editor to report up to 100 warnings before having messages hidden.
    - UTF-8 characters are now supported in input action names.
    - All platforms now use the `custom_template` property in each export preset to store the path to the custom export template (instead of `custom_package` for some platforms).
    - Tween methods' `trans_type` and `ease_type` arguments are now optional, defaulting to `TRANS_LINEAR` and `EASE_IN_OUT` respectively.
    - `PCKPacker.pck_start()` and `PCKPacker.flush()`'s `alignment` and `verbose` arguments (respectively) are now optional, defaulting to `0` and `false`.
    - Exporting a project PCK or ZIP from the command line must now be done with the new `--export-pack` command-line argument.
    - This was done to remove the ambiguity when exporting a project to macOS from the command line.
    - Updated FreeType to 2.10, which changes how font metrics are calculated.
    @@ -565,16 +582,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - For instance, `vec2 test2 = vec2(0.0, 1.0); vec3 test3 = test2.xxx;` now works as in GLSL.
    - The `AMBIENT_LIGHT_DISABLED` and `SHADOWS_DISABLED` flags now work when using the GLES2 renderer.
    - Several fixes to the GLES2 renderer:
    - Fixed transparency order.
    - Fixed vertex lighting being too bright.
    - Fixed occasional light flickering.
    - Fixed shadows cast from transparent materials.
    - Fog is no longer computed on unshaded materials.
    - This matches the GLES3 renderer's behavior.
    - GLES2 shader uniforms now use `highp` precision by default.
    - This prevents linking issues on some Android devices.
    - Negative OmniLights and SpotLights now work as expected.
    - The 3D editor's View Information pane now displays statistics correctly when using the GLES2 renderer.
    - Fixed transparency order.
    - Fixed vertex lighting being too bright.
    - Fixed occasional light flickering.
    - Fixed shadows cast from transparent materials.
    - Fog is no longer computed on unshaded materials.
    - This matches the GLES3 renderer's behavior.
    - GLES2 shader uniforms now use `highp` precision by default.
    - This prevents linking issues on some Android devices.
    - Negative OmniLights and SpotLights now work as expected.
    - The 3D editor's View Information pane now displays statistics correctly when using the GLES2 renderer.
    - Fixed several inconsistencies between Particles and CPUParticles.
    - Fixed particles scale randomization.
    - Particles are now set to emit correctly when restarting.
    @@ -621,9 +638,11 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The script editor can now autocomplete enum values.
    - The script editor can now autocomplete node paths starting with `$"` or `$'`.
    - Custom script editor templates can now use type hints.
    - Shift operators with a number not between 0 and 63 (inclusive) will now result in a compile-time error in GDScript.
    - Warnings no longer count towards the "Too many errors!" message.
    - AnimationTrackEdit now displays invalid value keys again (as it did in 3.0).
    - Fixed the display of function/audio/animation tracks in the blend tree animation filter.
    - The editor shortcuts menu no longer displays all unassigned shortcuts when searching for a substring of "None".
    - The editor's performance monitor now displays memory/file sizes larger than 2 GB correctly.
    - The editor debugger now displays keyboard shortcuts when hovering the "Step Into", "Step Over", "Break" and "Continue" buttons.
    - The editor debugger now always handles connections.
  26. Calinou revised this gist Jan 20, 2020. 1 changed file with 0 additions and 2 deletions.
    2 changes: 0 additions & 2 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -287,8 +287,6 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - `get_path()` and `get_path_absolute()` are now implemented in FileAccessEncrypted.
    - "Disabled" attenuation model for AudioStreamPlayer3D, making the sound not fade with distance while keeping it positional.
    - AudioEffectPitchShift's FFT size and oversampling are now adjustable.
    - Capture methods are now exposed to GDScript and GDNative in AudioServer.
    - AudioServer now emits the `audio_mix_callback` and `audio_update_callback` signals when mixing or updating audio.
    - TextEdit's tab drawing and folding is now exposed to GDScript.
    - Orphan node monitor in the Performance singleton.
    - Counts the number of nodes that were created but aren't instanced in the scene tree.
  27. Calinou revised this gist Jan 14, 2020. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -357,6 +357,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - `Camera.project_position()` now requires a second `depth` argument to determine the distance of the point from the camera.
    - To get the old behavior back, pass the Camera's `near` property value as the second argument.
    - `Skeleton.set_bone_global_pose()` was replaced by `Skeleton.set_bone_global_pose_override()`.
    - UDP broadcasting is now disabled by default and must be enabled by calling `set_broadcast_enabled(true)` on the PacketPeerUDP instance.
    - Improved the Project Manager user interface.
    - New, simpler design with more space available for the project list.
    - Improved reporting of missing projects.
  28. Calinou revised this gist Jan 8, 2020. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -524,6 +524,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - The number of warnings and errors that can be received in the remote debugger is now capped per second rather than per frame.
    - The default limit is 100 errors and 100 warnings per second, making it possible for the script editor to report up to 100 warnings before having messages hidden.
    - UTF-8 characters are now supported in input action names.
    - All platforms now use the `custom_template` property in each export preset to store the path to the custom export template (instead of `custom_package` for some platforms).
    - Exporting a project PCK or ZIP from the command line must now be done with the new `--export-pack` command-line argument.
    - This was done to remove the ambiguity when exporting a project to macOS from the command line.
    - Updated FreeType to 2.10, which changes how font metrics are calculated.
    - This may affect the appearance of some Controls, see [this issue](https://github.com/godotengine/godot/issues/28335) for details.
    - The SCons build system now automatically detects the host platform.
  29. Calinou revised this gist Jan 8, 2020. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -418,6 +418,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    - Decreased the `rotation_degrees` range in various nodes to -360..360 to be easier to adjust using the slider.
    - Lower and higher values can still be entered manually, which is useful for animation purposes.
    - The default RichTextLabel color is now `#ffffff`, matching the default Label color for better consistency.
    - Label's `visible_characters` property now takes spaces into account to be consistent with RichTextLabel.
    - SpinBoxes now calculate the entered value using the Expression class.
    - For example, writing `2 + 2` in a SpinBox then pressing Enter will result in `4`.
    - Saved resources no longer contain dependency indices and metadata such as node folding, resulting in more VCS-friendly files.
  30. Calinou revised this gist Dec 19, 2019. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions CHANGELOG.md
    Original file line number Diff line number Diff line change
    @@ -347,6 +347,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
    ### Changed

    - Tween and Timer now display an error message if they are started without being added to the scene tree first.
    - Functions called from a signal can no longer disconnect the node from the signal they're connected to (unless using `call_deferred()`).
    - Tabs and space indentation can no longer be mixed in the same GDScript file.
    - Each file must now use only tabs or spaces for indentation (not both).
    - The "Trim" and "Normalize" WAV import options are now disabled by default.