summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md724
1 files changed, 723 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 060a270426..c7202cabb8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,726 @@ 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/).
+## [3.2] - YYYY-MM-DD
+
+### 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.
+
+### 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.
+
+### Removed
+
+- 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.
+
+### 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.
+
## [3.1] - 2019-03-13
### Added
@@ -396,5 +1116,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
- HTML5 export using asm.js.
- Only WebAssembly is supported now, since all browsers supporting WebGL 2.0 also support WebAssembly.
-[Unreleased]: https://github.com/godotengine/godot/compare/3.0-stable...HEAD
+[Unreleased]: https://github.com/godotengine/godot/compare/3.2-stable...HEAD
+[3.2]: https://github.com/godotengine/godot/compare/3.1-stable...3.2-stable
+[3.1]: https://github.com/godotengine/godot/compare/3.0-stable...3.1-stable
[3.0]: https://github.com/godotengine/godot/compare/2.1-stable...3.0-stable