Free and open source 2D and 3D game engine for Windows PC

Godot Engine (32-bit)

Godot Engine (32-bit)

  -  74.3 MB  -  Open Source
Godot Engine 32bit is an advanced, feature-packed, multi-platform 2D and 3D open-source game engine for Windows PC! Godot provides a huge set of common tools, so you can just focus on making your game without reinventing the wheel.



Godot Engine is completely free and open-source under the very permissive MIT license. No strings attached, no royalties, nothing. Your game is yours, down to the last line of engine code.

Features and Highlights

An extremely efficient paradigm for designing games
  • Visual editor, full of mature tools.
  • Uncluttered UI, with context-sensitive editors.
  • Amazing scene system, supporting instancing and inheritance.
  • Friendly content creation interfaces for artists, level designers, animators, …
  • Visual shader editing for 2D and 3D.
  • Persistent live editing (changes are not lost after stopping the game). Live to edit on mobile devices!
Create any kind of complex 2D games
  • Fully dedicated 2D engine, no hacks.
  • Work in pixels as your units, but scale to any screen size and ratio.
  • Custom 2D physics engine that works in pixel coordinates.
  • Flexible kinematic controller for collision without physics.
  • Blit 3D models as sprites into 2D.
Create great-looking 3D games
  • Import 3D models from 3DS Max, Maya, Blender, and more with full animation.
  • Skeleton deforms and blend shapes.
  • Several light types, with shadow mapping.
  • Render with HDR, anti-aliasing, and linear color modes.
  • Post-process fog, glow, bloom, color adjustment, …
  • Support for Physically-Based Rendering planned for the end of 2016.
Most flexible animation system for games
  • Animate 2D or 3D. Visual animation editor with the timeline.
  • Frame-based or cut-out animation for sprites and rigs.
  • Any property of any object can be animated, even function calls.
  • Use custom transition curves and tweens.
  • Helpers to animate 2D rigs, with skeletons and IK.
  • Efficient optimizer to pack imported 3D animations.
  • Animation Tree support for fluid character animation.
Add behaviors to objects with a built-in scripting
  • A python-like scripting language, designed to make games with zero hassle.
  • Built-in editor with syntax highlighting, real-time parser, and code completion.
  • Powerful integrated debugger and profilers. It can debug a game running on mobile devices.
  • Integrated class documentation browser.
  • Friendly C++ API to optimize parts of the game or extend any part of the engine.
Deploy games everywhere!
  • Mobile platforms: iOS, Android, BlackBerry OS
  • Desktop platforms: Windows, macOS, Linux, *BSD, Haiku
  • Web Platforms: HTML5 (via Emscripten)
  • One-click deploy & export to most platforms. Easy to create custom builds too.
Requirements
  • Recommended: Vulkan 1.0 compatible hardware
  • Minimal: OpenGL 3.3 / OpenGL ES 3.0 compatible hardware
Additional requirements for the .NET version: .NET SDK

Alternatives

Unreal Engine - High-fidelity graphics, real-time 3D creation.

Unity - Powerful 3D and 2D gaming development software for Windows.

CryEngine - Advanced graphics and real-time rendering tools.

GameMaker Studio - Simple 2D development with drag-and-drop system.

Cocos Creator - Open-source framework focused on mobile games.

Construct 3 - Beginner-friendly drag-and-drop 2D game engine.

RPG Maker: Tailored for creating role-playing games, this software provides specialized tools and a simple interface for RPG development.

PROS
  • Open-Source and Free
  • Node-Based Architecture
  • Cross-Platform Export
  • Lightweight and Fast
  • Active Community Support
CONS
  • Limited 3D Features
  • Smaller Asset Marketplace
  • GDScript Learning Curve
  • Less Industry Adoption
  • Lacks Native Support for VR
Also Available: Godot Engine (64-bit) and Godot Engine for Mac

Why is this app published on FileHorse? (More info)
  • Godot Engine 4.5 (32-bit) Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    Godot Engine 4.5 (32-bit) Screenshot 1
  • Godot Engine 4.5 (32-bit) Screenshot 2
  • Godot Engine 4.5 (32-bit) Screenshot 3

What's new in this version:

2D:
- Add warning in scene tree when nested CanvasItems try to clip children
- Optimize usability of VisibleOnScreenNotifier2D
- Improve usability of Camera2D
- Draw tilemap coordinate and rectangle size on the screen when using the TileMapLayer's Terrains plugin
- Fix wrong canvas camera override panning in the runtime debugger
- Path2D prefer control points for outward curve
- Polygon2DEditor: Add tool to automatically move center of gravity to origin
- Add a dedicated editor for Camera2D limits
- Improve/fix TileMap and TileSet editors UI
- Fix applying TileMapLayer.self_modulate to tiles
- Add null check for SpriteFramesEditor's SpriteFrames
- Fix Editor 2D Ruler Text Top-Align
- Add ruler width editor setting to 2D editor
- Fix editing custom data for tilesets
- Allow Sprite2D being dragged to change their region_rect
- Fix process callback state getting overwritten by calls to set_process_smoothing_speed
- Improve Path2D debug performance
- Fix Camera2D right and bottom limit to depend on bottom right corner
- Fix rotated/flipped tiles rendering origin
- Deprecate ParallaxBackground and ParallaxLayer
- Improved Camera2D limits handling when limits are smaller than screen rect
- Expose Camera2D current rotation
- TileSet: Fix potential crash updating stale atlas source editor toolbar
- TileSet: Prevent crash in conversion of invalid tiles from Godot 3.x
- TileSet: Fix -Wmaybe-uninitialized warning on CompatibilityShapeData
- Make TileMapLayer editor match layer's filter
- Fix rotated/flipped tiles destination rect calculations
- Fix WorldBoundaryShape2D handle when distance is negative
- Fix Sprite2D error spam in exported project
- Don't put main properties of AnimatedSprite2D inside a group
- Improve Camera2D limit editing
- Fix removing wrong vertices in the Polygon2D editor when points overlap each other
- Fix points jumping when dragging starts in the Polygon2D editor
- Fix smoothed camera position with limits
- Fix error spam caused by internal_vertex_count property
- Fix selecting wrong vertices in the Polygon2D editor when adding a polygon
- Fix lingering grid from TileMapLayer editor
- Fix debanding not being used in the 2D editor when enabled in Project Settings
- Fix debug rendering in TileMapLayer
- Rename Camera2D set_position_smoothing_enabled parameter
- Fix TileMapLayer terrain preview icons for transformed alternative tiles
- Free TileMapLayer debug quadrant meshes when clearing

3D:
- Allow customizing debug color of Path3D
- Curve3D: Fix middle point forward vector when control1=end and control2=begin
- Disable debug draw modes in the 3D editor according to current rendering method
- Fix !is_inside_tree in csg node when reloading a scene
- Set correct position of node with Align Transform with View in orthographic view
- Fix 3D Ruler stuck in viewport if tool mode is switched during measurement
- Update cursor instance when calling set_selected_palette_item
- Fix being able to grab hidden transform gizmo handles
- Add "active" state to one of the multiple selected Node3Ds to determine basis in Local mode
- Fix some global-space bugs in RemoteTransform3D._update_remote and add some optimizations
- Editor: Improve capsule gizmos
- Do not commit gizmo handles if no changes were made
- Allow rotating selected cells in GridMap
- Add UndoRedo actions to preview sun/environment popup
- Unify CSGPolygon3D gizmos with the other geometries
- Use physical keys for the Q/W/E/R 3D editor shortcuts
- Make Game view follow more editor settings
- Improve cylinder gizmo performance
- Path3D prefer control points for outward curve
- Improve GPUParticlesCollision3DGizmoPlugin performance
- Unbind CSGShape::_update_shape() and make it public
- Fix GridMap shortcuts being triggered during freelook (mouse captured)
- Fix 3D view menu gizmo icons being broken in empty scene
- Allow multiple EditorNode3DGizmo collision meshes
- Fix missing tooltips on "Advanced Import Settings for Scene" window
- Allow higher freelook base speed values in the 3D editor settings
- Fix gizmos from 3D editor plugins not applying changes to locked nodes
- Optimize PrimitiveMesh creation by avoiding CoW behavior and dynamic memory allocations
- Fix GridMap OctantKey cell rasterization
- Fix light theme gizmo icons in the 3D editor appearing too dark
- Optimize GridMap rendering scenario quadruple-getters
- Replace GridMap legacy use of List with LocalVector
- Improve and optimize lightmap probe gizmo creation
- Fix incorrect transform when editor camera is moved externally
- Fix GridMap move selection crashing on invalid MeshLibrary item
- Gave billboarded sprites and labels more fitting AABBs
- Fix for Node3D request gizmos multiple times
- Fix Quaternion arc constructor tolerance
- Show Curve3D point tilt in degrees in inspector
- FTI - global_transform_interpolated() on demand for invisible nodes
- Add a LightmapProbe gizmo size editor setting
- Fix missing gizmo update when selection changes outside of 3D view
- SceneTreeFTI: - miscellaneous speedups
- Create more optimized CSGShape3D baked static mesh
- Fix freelook in 3D when multiple viewports are open
- Clear cache when setting Mesh's surfaces
- Fix MeshInstance3D::get_active_material() error on empty mesh or empty surfaces
- Gridmap editor: Avoid extra mesh instantiation when setting clipboard data
- Fix Mesh.generate_triangle_mesh when using PRIMITIVE_TRIANGLE_STRIP
- Revert "Create more optimized CSGShape3D baked static mesh"
- Fix sphere gizmo handle position
- Move last four 3D files to 3D folder and move physics gizmos to their own physics folder
- Fix missing 3d gizmos
- Fix editor segfault when using a Path3D without a Curve3D
- Stop clearing editor_plugin_screen on script edit
- Fix BoneAttachment3D getting global transform of external skeleton before it is_inside_tree()
- Fix node can't be rotated by holding ctrl/command while in select mode
- Fix cinematic preview causing the editor redraw continuously and aspect ratio not updating in camera preview
- Fix transforms trying to continue after a cancel
- Prevent held escape key from unselecting nodes after canceling a transform
- Create an undo/redo action when pinning a SoftBody3D point in the editor

Animation:
- Allow double-click within tracks to set a new play position
- Add option to auto tangent new bezier points in animation editor
- Support hiding functions calls in Method Tracks
- Add editor setting for default animation step
- Add selection box movement/scaling to the animation bezier editor
- Implement BoneConstraint3D with CopyTransform/ConvertTransform/Aim Modifiers
- Fix opacity when deleting or renaming a node in AnimationNodeStateMachine
- Improve wording on recursive transition detection warning
- Add external force property to SpringBoneSimulator3D
- Change NodeOneShot fading to uses self delta instead of input delta
- Add editor setting for FPS mode and compat
- Add node started/finished signals for animation state machines
- Add animation filtering to animation editor
- Fix Tween.is_valid() returning true after calling kill()
- Add select node shortcut to list view in Animation Player Editor
- Add alphabetical sorting to Animation Player
- Add delta argument to SkeletonModifier3D._process_modification() as _process_modification_with_delta(delta) and expose advance() in Skeleton3D
- Fix console errors and crash in cleanup code for PhysicalBoneSimulator3D
- Improve State Machine BlendTree node to properly display conditions
- Fix missing process_state error in blend spaces
- Add is_inside_tree() check to SpringBoneSimulator3D
- Fix rest translation space in LookAtModifier3D
- Remove incorrect errors in AnimationMixer
- Add correct cursors when scaling bezier keys with box scaling
- Add bone name/idx matching validation and lacked virtual methods to SkeletonModifier3D
- Fix final tween value with custom interpolator
- Add axis snapping for bezier key move in Animation Player
- Move SpringBoneSimulator3D registration to the outside of Physics3D's environment
- Fix EditorSpinSlider Grabber Scaling
- Fix current_animation_changed emission on animation finish
- Remove dead code in AnimationStateMachine editor
- Remove error print in the Animation getter
- Expose AnimationNode(StateMachine/BlendTree).get_node_list()
- Fix the Animation Optimization results for Nearest and Cubic Interpolation
- Sort animation nodes in AnimationNodeBlendSpace2DEditor popup menu
- Make silhouette fixer to use arc Quaternion constructor instead of looking_at()
- Fix scaling from cursor in AnimationPlayer
- Use AHashMap for RBMap nodes and HashMap input_activity
- Add optional rotation axis & Fix initial pose with rotation axis in SpringBone
- Fix rest update process by dirty flag to not take into account pose dirty flag in Skeleton3D
- Fix creating outline for skinned meshes
- Use a type-hinted dictionary for AnimationLibrary's libraries property
- Make sure clicking AnimationTree node open the state machine editor not the track editor
- Implement method lookup for method tracks
- Fix fade out duration to extend a bit take into account current delta in NodeOneShot
- New test for animation blend tree
- Remove unnecessary calling _validate_property() in the core from all extended classes
- Fix Heap buffer overflow in Animation::_find()
- Refactor BoneAttachment property registration
- Implement ModifierBoneTarget3D which can be target of the other SkeletonModifier3Ds
- Fix ambiguous AnimationNode's parameter type in default value and make validate_type_match() static function
- Fix animation track filter size bug
- Add default paramater for AnimationNode as super class
- Fix animation track inserted path and key type
- Fix AnimationPlayer finished state in the editor
- Fix editing/removal of bone meta
- Skip killed/invalid subtween
- Fix animation keying not working with toggleable inspector sections
- Block Tween custom_step() during step
- Remove PropertyTweener start warning
- Fix SpringBone3D being unintentionally disabled
- Fix glitched animation key after canceled dragging
- Fix name included in animation when saved from slice in scene importer
- Fix incorrect blend_position values in BlendSpace editor after dragging point
- Correctly hide BlendSpace editor error panel on load
- Process skeleton modifiers when the skeleton is marked as dirty
- Fix overly aggressive focus grabbing by StateMachine and BlendSpaces
- Add missing bone name suggestions in ModifierBoneTarget3D
- Move Skeleton3D init process (for dirty flags) into POST_ENTER_TREE from ENTER_TREE

Assetlib:
- Fix wrong "location" substring matching when HTTP status is 301 or 302

Audio:
- Fix audio input gets muted after a while on android
- Editor: Move thread name assignment in audio preview
- Add metadata tags to WAV and OGG audio streams
- Add "Mute Game" toggle in Game view
- Reduce memory overhead of save_to_wav
- AudioStreamPlaybackWAV: Inherit from Resampled
- Implement seek operation for Theora video files, improve multi-channel audio resampling
- Fix AudioServer missing deletes
- Set interactive music streams as meta streams
- Fix AudioEffectPitchShift issues when pitch_scale is set to 1
- Optimize reverb by removing stray volatile from the undenormalize function signature
- Add support for Mute Game toggle in the Android Editor
- Fix AudioStreamPlayer3D stereo panning issue
- Enable TTS on demand, instead of fully disabling it when project setting is not set
- Add an actual name for Ogg Vorbis importer visible name
- Allow theming audio buses
- AudioEffectPitchShift: 3rd attempt at fixing -Wstringop-overflow warning
- Return the length of the playing stream for AudioStreamRandomizer
- Fix AudioStreamPlayer3D's layer_mask property using the wrong property hint (+ misc related fixes)
- Hide scrollbar in the audio stream importer dialog when unneeded
- AudioStreamWAV: Inline tag remap inside load
- Fix audio name doesn't appear in exports of child classes of AudioStream
- Fix broken WAV info list tag parsing
- Use TightLocalVector for AudioStreamWAV/MP3
- Web: Fix Webkit leak caused by the position reporting audio worklets
- Add permission request for Apple embedded platforms, fix microphone input
- Fix AudioListener3D not tracking velocity for doppler
- Web: Fix sample playback deletion and AudioStreamPolyphonic issue
- Add missing copyright for pitch shift
- Fix random pitch upward bias in AudioStreamRandomizer
- Make WAV metadata tag mappings more consistent with Vorbis
- Web: Fix AudioStreamPlayer.get_playback_position() returning incorrect values for samples

Buildsystem:
- Use SSE 4.2 as a baseline when compiling Godot
- Remove PrefersNonDefaultGPU from linux desktop file
- SCons: Make builders prettier, utilize constexpr
- CI: Format SCons input flags & build action
- Core: Avoid including modules/modules_enabled.gen.h in headers
- CI: Ensure default branch cache persists
- Remove custom --language-in arg for the Closure compiler
- CI: Replace pytest with pre-commit hook
- SCons: Add emitter to declutter build objects
- Replace header guards style with #pragma once
- Web: Add library emitter to make sources dependent of compiler version
- SCons: Implement minor fixes
- Style: Ensure svgs have trailing newlines
- Update CI ruff & mypy pre-commit hooks
- Fix .sln project generation logic for Rider to support all OS and all C++ toolchains
- Bump version to 4.5-dev
- CI: Use correct godot-cpp branch
- CI: Bump SCons to latest (4.8.1 → 4.9.0)
- Android: Fix build with disable_3d
- zstd: Update to 1.5.7, fix support for GAS .S files on Windows/MinGW
- SCons: Simplify Windows/MSVC detection
- SCons: Remove check_c_headers
- Revert mypy update (1.15.0 -> 1.14.1)
- CI: Add workflow to cleanup PR caches when closed
- CI: Trim cache before saving
- Apply pre-commit changes
- Fix build errors when building with disable_3d=yes
- Make SConstruct file check some envs before querying modules
- SCons: Fix broken msvc conditional
- CI: Set explicit write permission for cache cleanup token
- CI: Build macOS binary without Vulkan if Vulkan SDK fails installing
- CI: Ensure scons-cache exists before parsing
- SCons: Expand NoCache coverage
- Web: Fix editor build after #pragma once refactoring
- Fix incorrect guards in VisibleOnScreenNotifier2D
- Support a NO_COLOR environment variable in doc_status.py
- SCons: Refactor color.py
- Editor: Restructure editor code
- SCons: Ensure MinGW as fallback if missing MSVC
- CI: Bump various pre-commit hooks
- Android: Replace the deprecated version macro
- CI: Validate scons-cache via action output
- SCons: Only set GCC -Wvirtual-inheritance for C++ and warnings=extra
- SCons: Add CPPEXTPATH for external includes
- mbedtls: Disable ASM when compiling with LLVM MemorySanitizer (MSAN)
- Organize ifdefs for disabling navigation, physics, and XR
- Fix compiling with disable_xr=yes when 3d enabled
- SCons: Integrate WARNLEVEL & OPTIMIZELEVEL
- CI: Remove "Free disk space on runner" job (REVERTED)
- Fix issue where vsproj=yes vsproj_gen_only=no sometimes fails to build
- Web: Add the equivalent of -Werror for wasm-ld
- Fix missing gdb.printing import for the pretty print script
- Add {c,cpp}_compiler_launcher options
- Android: Enable native debug symbols generation
- Update the Android NDK to the latest LTS version (r27c)
- SCons: Begin decoupling generation & build code
- Native visionOS platform support
- Fixes for .sln project generation for Rider on Mac/Linux
- CI: Remove legacy dependency
- CI: Replace gold with mold
- Use separate_debug_symbols to control generation of the separate Android debug symbols file
- Web: Add required exported functions and runtime methods for emscripten
- SCons: Explicitly enable -mfpmath=sse -mstackrealign for x86_32
- Fix macOS build with ANGLE enabled and Vulkan disabled
- CI: Remove now unused godot-api-dump action
- Update Mesa-NIR library detection and download script
- CI: Ensure Windows Actions handle utf-8 characters
- MinGW: Explicitly link shell32 library
- Fix uiautomationcore linking in 32-bit x86 MinGW builds
- Fix install_vulkan_sdk_macos.sh incorrectly saying Vulkan was installed when jq is missing
- SCons: Add enum conversion warning
- Web: Include emscripten headers by default
- Remove WinAPI #undef hacks needed for mingw-std-threads
- doctest: Patch for clang warning about replacing <ciso646> by <version>
- Add EnumVariable(ignorecase=2)
- Wayland: Fix compile error with DBUS disabled
- CI: Run apt update before installing libxml2-utils
- Only instantiate MovieWriterMJPEG and MovieWriterPNGWAV movie writers if they are enabled
- CI: Propagate matrix.sconsflags in macos_builds.yml
- Move MovieWriterMJPEG class to jpg module it depends on
- Remove registration of deprecated classes
- SCons: Don't enable -Wenum-conversion for GCC < 11
- register_editor_types: Fix DISABLE_DEPREACTED typo
- macOS: Fix support for latest VulkanSDK .app name in install script
- Bump the minimum supported SDK version to 24
- Annual versions bump for the Android platform
- basis_universal: Add missing ctype.h include to fix MSVC build
- Linux: Fix build with dbus=no or threads=no
- Convert path separators for Windows
- SCons: Hide SCU folders by adding "." to foldername
- Android: Store native libraries uncompressed in APK
- Preserve CRLF line terminators for MSVS project template
- Web: Add WebAssembly SIMD support (wasm_simd) and enable it by default
- macOS: Fix template_debug build after #105884
- Skip default font loading if Brotli is disabled
- Fix macOS build with dev_build=yes and target=template_debug
- Linux: Drop ppc32 (32-bit PowerPC) architecture support
- Wayland: Unbreak build with libdecor=no
- D3D12: Silence -Wmaybe-uninitialized warning in D3D12MemAlloc
- Android: Re-add generate_apk alias for compatibility
- Make it possible to run CI manually if DISABLE_GODOT_CI is set
- Update to the AAB directory layout
- Shader Baker: Fix build with deprecated=no
- Fix alphabetical order of codespell ignore list
- Windows: Drop support for Windows 7/8/8.1
- Web: Fix build failure on Windows
- SCons: Identify build clearly when using AES256 encryption key
- Fix Android build files joining paths without join
- Wayland: Simplify including protocols
- Web: Add Web-build specific stdout header
- Web: Fix Emscripten for WebXR and update minimum version
- Update CI ruff pre-commit hooks
- Add module defines to the per-platform generated props file so VS knows which ones are enabled
- Fix compiler error: pass -mpopcnt when using clang / llvm and targeting x86_64
- Android: Fix the build logic to generate the native debug symbols
- SDL: Fix missing header build error on some Linux systems
- Add .zed/ to .gitignore
- Fix remaining physics and navigation disabling issues
- Thirdparty: Fix SDL arm64 compilation on Windows
- Android: Update the maven publishing configuration following the deprecation of the OSSHR service
- Codeowners: Minor improvements after restructure
- SCons: Support header-only modules
- Windows: Fix SSE4.2 detection with LTO build
- CI: Use Xcode 16 for macOS build
- macOS: Use liquid glass icon for the editor
- CI: Use modern --import syntax in GHA
- CI: Add headless import test
- macOS: Regenerate editor icns file to include all resolutions
- Meta: Move /editor/scene folder from core to docks codeowner
- CI: Update dependency setup on Linux actions
- SCons: Temporarily revert Mesa includes to CPPPATH
- SCons: Fix dlltool on Windows MinGW builds
- CI: Fix detection of Windows D3D12 dependencies
- CI: Ensure prettier/clearer sanitizer output
- Fix build on OpenBSD
- Bump version to 4.5-rc
- Fix Wayland build with OpenGL disabled

C#:
- Remove unnecessary spaces
- Resolve the hostfxr path using dotnet CLI
- Add linux-bionic RID export option to support NativeAOT on Android
- Use ObjectID when converting Variant to GodotObject
- Editor: Prevent TOOLS .NET DefineConstants being overriden by the user
- Fix thread deadlock when using a worker thread to load a script with a generic base class
- Update Dotnet iOS Export Process
- Fix RefCounted not disposed correctly in certain case
- Add Min(float) and octahedron encode/decode to Vector3.cs
- Improve Documentation for Typed Godot.Collections Wrappers
- Skip serializing delegates with a disposed target
- Move entries from AnalyzerReleases.Unshipped.md to AnalyzerReleases.Shipped.md
- Skip re-saving .csproj when TFM is unchanged
- Add missing get_data when calling CFStringCreateWithCString in macos_utils
- Fix missing Vector4(i) and Projection in C# bindings generator
- Deprecate compat methods that reference deprecated types
- Fix source generator for primary constructor
- Fix nested GodotObject class in generic class lead to source generator errors in C#
- Add caching for dotnet TFM validation result
- .Net: Avoid unnecessary StringName allocations on not implemented virtual _Get and _Set method call
- Separate Rider and Fleet options as external editors
- Fix Windows Mono build
- .Net: Avoid array allocation when signal have 0 arg
- Use FrozenDictionary for NamedColors
- Add a preload hook to load .NET assemblies from the APK
- Fix string.PathJoin to be consistent with core
- Fix extraction of C# default property values when negative
- Avoid StringName allocation in GodotObject.Free
- Mark referenced packages in SDK as implicitly defined
- Load assemblies directly from PCK on Android
- Don't create unnecessary arrays in C#
- Expose byte array compress and decompress
- Avoid heap alloc when using StringNames as key in a Dictionary
- Use stackalloc to create the pivot arrays in Projection.Inverse
- Fix 'Script class can only be set together with base class name' error with .NET typed collections upon rebuild
- Fix crash on aot unloading
- Fix source generator exceptions appearing when use "@+internal keyword" as type or namespace name in C# script
- Add Basis.ScaledLocal
- Fix Mono build on Windows after String::resize rename
- Fix Quaternion(arc_from: Vector3, arc_to: Vector3) behaves differently in gdscript and c#
- Avoid exporting to duplicate architectures
- Fix return value of StringExtensions.GetExtension()
- Mention MSBuild panel when building fails
- Fix crash in C# bindings generator with bad enum documentation XML
- Fix Quaternion(Vector3, Vector3) constructor when vectors are the same
- Fix C# environment variables access on Linux (SDL-related bug)
- Fix the issue preventing installing C# binaries on Android devices with api <= 29
- Require net9.0 for Android exports

Codestyle:
- Remove ABS in favor of Math::abs
- Remove pointless use of atomics in error macros
- Use initializer list in Arrays
- Core: Add [[nodiscard]] to string-like classes/structs
- Core: Convert Math class to namespace
- Use get_slicec instead of get_slice for single character splitters
- Optimize String::chr to avoid calling strlen. Use String::chr instead of String(&chr, 1) where appropriate
- Add templated version of ObjectDB::get_instance()
- Remove unnecessary friend class declarations of CowData
- Image: Remove references to defunct FORMAT_CUSTOM
- Style: Standardize Obj-C #import syntax
- Use iterator pattern instead of manually traverse List::Element *
- Use std::size instead of sizeof(a) / sizeof(a[0]) pattern throughout the codebase
- Clean up some uses of String::substr
- Improve _is_drop_valid() code in EditorPropertyArray
- Style: Begin integrating simple clangd fixes
- Use idiomatic templating vargs in a few places to reduce code
- Remove empty constructors and destructors from editor/
- Style: Convert namespaces to PascalCase
- De-duplicate String single-char constructor
- Remove TOOLS_ENABLED checks from editor/
- Camera2D code cleanup
- Replace size() == 0 with is_empty()
- Core: Replace C math headers with C++ equivalents
- Remove pointless _3D_DISABLED checks in editor code
- Tree: apply comment style guidelines and remove unused variables
- Make reusable functions for GameController joystick and trigger input
- Replace append_utfx with direct String::utfx
- Core: Integrate warning suppression macro helpers
- Remove unused get_valid_parents_static functions from GDCLASS
- Remove unused get_inheritance_list_static from GDCLASS
- Move GD_IS_CLASS_ENABLED and respective include from class_db.h to object.h, as this is where it's needed
- Convert PtrToArg macros to regular C++ structs
- Core: Use Math namespace for constants
- Range: Remove useless p_what argument
- Replace duplicate code of is_ancestor_of() in node.cpp
- Remove auto misuse cases
- Use Math::abs to avoid ambiguity with integer abs
- Rename BLOCK_DEVICE() macro to FORCE_ANGLE() in main.cpp
- Use Math::abs to avoid ambiguity with integer abs
- Simplify use of LocalVector force_trivial template parameter
- Style: Declare inline macros as attributes
- Remove GridMap godotsphir remarks
- FileDialog code cleanup
- Fix various sanitizer issues
- Quick StringName improvements
- Inline static variables (part 1)
- Remove inline from constexpr variables
- Core: Modernize C headers with C++ equivalents
- Rename editor "File" MenuOption enums for clarity
- Remove empty constructors and destructors from scene/
- Fix a typo in variable name in ProgressBar class
- Remove unused SceneTree::make_group_changed
- Improve ScriptLanguage get keyword API
- Optimize and simplify sarray
- Style: Remove redundant DEBUG_METHODS_ENABLED macro
- Fix for implicit conversion from char16_t to char32_t in TextServerAdvanced
- Simplify Memory::memnew_arr_placement to always initialize memory
- Un-support force_trivial parameter for LocalVector. Instead, users should use resize_uninitialized
- Remove obsolete VMap forward declaration
- Remove redundant queue_redraw() & fix typo
- Rename String::resize to resize_uninitialized
- Fix mixed use of spaces and tabs for indentation
- Remove implicit conversions from math types to String, to avoid accidental conversions
- Enforce GDScript and C# dictionary spacing style guidelines in code samples
- Core: Remove implicit conversions from Callable and Signal to String, to avoid accidental conversions
- Core: Remove unused StringName::search
- Core: Remove implicit conversions from IPAddress to String, to avoid accidental conversions
- Make conversions from NodePath to String explicit
- Fix spelling in comments
- Android: Misc changes
- Typo cleanup pass

Core:
- Add PackedByteArray conversion to PackedVector2Array, PackedVector3Array, PackedVector4Array and PackedColorArray
- Change Node set_name to use StringName, slightly improves performance
- Typed array equality operator update
- Add negative index to Array.remove_at and Array.insert
- Add Node.get_orphan_node_ids, edit Node.print_orphan_nodes
- Add list initialization to Array, Variant, and TypedArray
- Improve error message for String.format when using nested Arrays
- Expose set_uid()
- Don't duplicate internal nodes
- Fix RID cannot be string formatted
- Add Logger and ability to print and log script backtraces
- Remove old path remaps system
- Use Vector for MethodInfo::arguments
- Add String::replace_char(s) methods for performance and convenience
- Add String::remove_char(s) methods for performance and convenience
- Avoid unnecessary copy-on-write Vector/Array
- Improve JSON::stringify performance
- Consolidate and simplify string joining code in VariantUtilityFunctions
- Add dedicated BitField template
- Convert Pair/KeyValue to constexpr
- Array: performance improvements to reduce copying/copy_on_write calls
- Add is_same to types that have float components
- Reduce allocations when solving path in AStarGrid2D
- Update ViewportTexture path relative to its local scene instead of the Viewport owner
- Fix StreamPeerGZIP::finish() internal buffer size usage
- StringLikeVariantOrder: Compare in-place
- Integrate CharStringT
- Use Grisu2 algorithm in String::num_scientific to fix serializing
- Fix String::is_valid_hex_number
- Add create_id_for_path() to ResourceUID
- Improve parse_utf8 performance
- Print error message when index is out of range in Variant::iter_get
- Improve ContainerTypeValidate performance for object types
- Fix RandomPCG::random(int, int) overflow bug
- Simplify and fix Projection's getter functions
- Optimize String copy_from_unchecked to actually not check the string
- Add Span struct (replacing StrRange). Spans represent read-only access to a contiguous array, resembling std::span
- Use LocalVector instead of List as arg of Dictionary::get_key_list
- Optimize / refactor CowData, combining resize and fork to avoid unnecessary reallocations
- Overhaul resource duplication
- Use 1.5x growth factor for LocalVector
- Natively convert enum/BitField with Variant
- Add LocalVector.erase_unordered, mimicking erase but with remove_at_unordered, to remove duplicate logic
- Rename LocalVector.invert() -> LocalVector.reverse() to match the Vector, String and List APIs
- Change StringName.operator const void * to explicit operator bool
- Remove implicit conversions from String, Char16String and CharString to data pointers
- Remove unnecessary allocations and memcpy in codesign.cpp
- Add String::ascii creator functions, to parse a char buffer as ASCII
- Remove unintentional use of zero-width space
- Isolate Ref forward declare logic
- Optimize and expose Basis::scaled_local to script
- VariantParser: Fix reading negated identifiers, replace inf_neg with -inf
- Automate generation of the char_range.inc file
- Move unicode_ranges out of dynamic_font_import_settings.cpp into its own file
- Don't inline certain functions for smaller binary size
- Add DDS image load and save functionality
- Optimize ProjectSettings::get_setting_with_override / GLOBAL_GET by avoiding repeated dict lookups
- Optimize String::get_data by avoiding a dereference of ptr, and inlining the function
- Sanitize ClassDB locking
- Add ERR_FAIL_COND_MSG for reparenting to self
- Add scene_changed signal to SceneTree
- Fix file handle leak in ZipArchive and FileAccessZip
- Rename "file" param for str.path_join() to "path"
- Add compression level support to Zip Module
- PackedScene: Use ObjectID for DeferredNodePathProperties base
- Use single RNG instance for FileAccessEncrypted IV generation
- Fix crash when calling get_argument_count() on Callable with freed object
- Rename version defines to GODOT_VERSION_* to match GDExtension godot-cpp
- Prevent inlining error printing functions
- Add missing default values to the read_*_from_stdin binds
- Avoid multiple lookups in Dictionary::operator[]
- Fix AHashMap constructors reserving too few elements
- Optimize Object::cast_to by assuming no virtual and multiple inheritance, gaining 7x throughput over dynamic_cast
- Optimize Array.resize by using memset (through new is_zero_constructible type trait)
- Fix translation remaps incorrectly falling back
- Revert "Add built-in GUI to display license notices"
- VideoStreamPlayer: Redraw when stream resolution changes
- Add C array constructor to Span
- Add iteration to Span
- Move CowData find, rfind and count to Span
- Add Span conversion to LocalVector
- Remove outdated vformat comments/workarounds in time.cpp
- Improve error messages for add_property_info()
- Directly use segment points in Geometry2D/3D function parameters
- Remove unneeded read_only check for Array const operator
- Add const iteration support to Dictionary
- Add FixedVector template - a collection that can be used completely on the stack
- Fix Invalid Task ID errors in ResourceLoader
- Do not iterate Dictionary with get_key_at_index
- Fix missing binding for NOTIFICATION_WM_POSITION_CHANGED
- Use resize_zeroed instead of resize then fill(0) in several places
- Add missing Projection constructor with 16 real_t values
- Bind SceneState methods get_path and get_base_scene_state
- Add Memory::alloc_static_zeroed to allocate memory that's filled with zeroes
- Remove String clipping constructors
- Fix Marshalls.utf8_to_base64 shows "ret.is_empty()" is true error for empty string
- Recycle zstd decompression context if possible, avoiding repeated allocations
- Add missing String + char * function, to avoid unnecessary right side allocation to String
- Expand is_zero_constructible coverage
- Optimize FileAccessCompressed::get_buffer by using memcpy
- Fix hash issue with OptimizedTranslation caused by signed char
- Fix tangent baking for curves when cubic derivatives are 0
- Optimize thread pools by avoiding needless locks and unlocks of the task_mutex
- Simplify and optimize Math::absf implementation to use ::fabs and ::fabsf
- Harmonize String, Vector and LocalVector find and rfind
- Don't free already freed scenes when changing SceneTree current scene
- Optimize ClassDB::get_direct_inheriters_from_class
- Optimize Array methods with SWAP/std::move
- Optimize Object::notification by avoiding runtime branches
- Optimize Color::to_html by allocating less
- Do not iterate Dictionary with Dictionary::keys()
- Add resize_initialized and resize_uninitialized to Vector and LocalVector
- Use append_ instead of parse_ for String methods
- Include intrin.h for MSVC
- Expose TriangleMesh api functions wrapped for scripting
- Add move semantics to Ref
- Add missing initializer_list constructor to TypedDictionary
- Remove redundant ClassDB::locker declaration
- Optimize LocalVector::push_back for non-trivial objects
- Use LocalVector in RID_Owner::get_owned_list
- Image: Improve is_invisible function
- Image: Fix typo at _set_color_at_ofs with FORMAT_RGB565
- Fix reversed hex order in Color::to_html
- Add missing "/" to "center" tag in __print_line_rich()
- Rename _strlen_clipped to strnlen (and use the system equivalent for char * inputs)
- Add and require GDSOFTCLASS for Object subclasses that want to cast but do not use GDCLASS
- Fix time display in MovieWriter window title and console output
- Optimize Color HTML validation
- Optimize Color.html()
- CryptoCore: Use size_t for buffer sizes to fix encoding/sums of 2.0+ GiB files
- PortableCompressedTexture: Fix create compressed format from image
- Always use String as StringName backing internally
- VariantWriter::write: Fix writing negative infinity when p_compat is true
- Optimize ClassDB::get_inheriters_from_class
- Decouple GDCLASS from ClassDB
- Fix caching of objects' class name pointer in Object instances
- Add uri_file_decode to handle + in file names
- Fix FileAccessCompressed claiming one byte more than it actually has
- Add bswap methods to the PackedByteArray bindings
- Add a safety check for CowData::_unref(), for when something tries to add elements during destruction
- Change get_class_static to return StringName
- Remove misleading and incorrect notes about endianness. Fix FileAccess and StreamPeer not doing what name suggests
- Fix Thread crash when using invalid callback signature. And invalid message formatting
- Use non-recursive mutex for StringName, improving performance
- Use validated key in Dictionary::has
- Add GDSOFTCLASS to FileAccess and DirAccess derived classes
- Fix BBCode print with nested [
- Smoke test: Log an error if reserve() is called with fewer elements than size()
- Fix custom scene argument if it's referenced as UID
- Add --scene command line argument
- Supress unused paramater warning conflicting with if constexpr
- Allow inserting at end of array again
- Optimize Array min/max methods
- Add thread safety to Object signals
- Increase chunk limit for known problematic RID_Owners
- Fix cases where _get returned true erroneously
- Remove 2^31 cap on RID allocations
- Ensure VARIANT instances are actually VT_BSTR before treating them as such in OS_Windows::get_video_adapter_driver_info()
- Reuse and optimize sorting logic for List, SelfList, and HashMap
- Improve ConfigFile get_sections and get_section_keys by returning Vector
- Improve Window's _validate_property()
- Print script backtrace in the crash handler
- Remove unnecessary StringName idx cache in _Data to reduce its size
- Use PagedAllocator for StringName to accelerate and localize allocations
- Optimize static allocations by removing unused Memory::alloc_count
- Add GLOBAL_GET cached macros
- Use __fastfail() in MSVC error macros
- Avoid extra copy/validation of keys in Dictionary::has_all
- Deprecate PackedDataContainer
- Only update case sensitive fuzzy searching within set_query
- Optimize HashMap insertion by removing duplicate computation of hash and position
- Reduce allocations/copies in String::format
- Add Dictionary Type Hint to SVGTexture
- Fix empty lines being added for errors with no script backtrace
- Fix for debugging typed dictionaries
- Support 64-bit sizes in Compression
- Faster Node::get_child_count()
- Fix wrong children range when duplicating node
- Remove translation loading logic that was never used
- Improve Timer::start error message
- Avoid single character String allocations when appending characters
- Refactor TextEdit::search to be more robust to failure
- Optimize HashMap size for zero-sized Allocators
- Move bisect functionality to Span and deduplicate code
- Accelerate HashMap and HashSet lookup by using if based modulo in loops
- Add 64-bit versions of core power of 2 functions
- Prevent comparison of items with themselves while partitioning sort arrays
- Use LocalVector for RingBuffer
- Expose helper methods for converting UIDs
- Improve error messages in ResourceLoader
- Simplify implementation of errarray
- Update time.cpp year/unix time conversions to be constant time
- Move compatible functionality from GDCLASS to GDSOFTCLASS
- Theora: Fix UV channel offset when cropping region
- Remove redundant data.inside_tree
- JavaClassWrapper: Don't discard overloaded methods that differ by object type
- Add missing headers in FixedVector and Span
- Remove OAHashMap, in favour of AHashMap
- Expose WorkerThreadPool.get_caller_task_id()
- Add WorkerThreadPool.get_caller_group_id
- Fix ResourceSaver saving default value of Resource
- Fix various race conditions with capturing of script backtraces
- Fix async resource loading progress on empty p_original_path
- Revert some instances of Math::INF back to 1e20
- Add Ogg Theora support to MovieWriter
- Fix resources wrongly duplicated upon instantiating inherited scenes
- Bitpack node auto translation values
- Add missing Color hash function
- Expose Node.can_auto_translate()
- Fix script property of custom resources inherited from scripts are not saved
- Add a proper error message when trying to add node to a group with an empty name
- Stop FileAccess::fix_path from emitting errors for invalid UIDs
- Add a smoke test for non-empty nullptr Span
- Improve error messages for method calls expecting only 1 argument
- PCKPacker: Fix first file being written mis-aligned
- Fix data race in remote debugger; handle errors
- Fix invalid resize after appending
- Enhance bindings of deep resource duplication
- Use reserve in LocalVector::resize, to restore expected growth behavior
- Always decode --scene argument UID path
- Image: Fix is_invisible detection for RGBAH and RGBAF
- Fix typed collections using same reference across scene instances
- Never duplicate Scripts when duplicating resources recursively
- Fix issue with array comparison reference
- Remove an unnecessary include of main/ code from core/
- Fix releasing the old unique name when renaming a Node
- Ensure that threads only process one pump task
- Fix internal JSON stringify not preserving p_full_precision
- Prevent infinite recursion during printing
- macOS: Make document type icons look closer to current macOS system type icons
- Fix external resource IDs being lost for default properties
- Allow processing low priority threads on calling thread in the WTP
- Fix printraw causing infinite recursion in Logger._log_message
- Fix FindClass() failing to find Dictionary on Android leading to crash
- Harden jni_find_class() and its setup/cleanup
- Automatically unregister loggers when script language is deinitialized
- Fix symlink copy in DirAccess::copy_dir
- Fix local_to_scene duplication of typed dictionary
- Fix screen_orientation not being assigned on ios
- Fix drive selection issue on Android
- Don't use alloca() in Object::emit_signalp() to prevent stack overflow
- Fix regression in mechanism to hold objects while emitting
- Fix typo in ScriptLanguageExtension::lookup_code
- Rename SVGTexture to DPITexture
- Fix safe area regression on older Android versions
- Revert "Prevent crashing if max_threads is zero."
- Make SceneTree not crash when receiving a notification without a root being set
- Fix Resource duplicate calls ImageTexture::set_image with an invalid image

Documentation:
- Overhaul Node3D documentation
- Replace XML codeblock spaces with tabs
- Overhaul CanvasItem documentation (no draw methods)
- Move and simplify Object's connect description slightly
- Add tip to use more specific return type for _iter_get()
- Improve documentation on "physics spiral of death" in ProjectSettings
- Mention DUPLICATE_SIGNALS only affects CONNECT_PERSIST signals
- Clarify ambiguous String comparison methods documentation
- Add explanation for the PROPERTY_HINT_DICTIONARY_TYPE data format
- Update capsule documentations for size constraint clarifications
- Specify max_slides must be greater than 0
- Add a note about Object._init and required parameters in relation to @rpc
- Fix LogMultiplayer example in documentation
- Update OptionButton documentation
- Improve documentation of some Resource methods
- Add basic descriptions to the BreadcrumbMarker enum
- Add info about set_deferred for CollisionShape3D disabled property
- Use float instead of integers for durations in Tween documentation
- Replace references from TileMap to TileMapLayer in documentation
- Clarify forward direction for VehicleBody3D
- Better explain texture repeat
- Fix CanvasLayer 'Follow Viewport' documentation to match its behavior
- Document that memdelete() is the GDExtension C++ version of free()
- Clarify requirement for action match in InputEvent.is_action_pressed
- Fix InputEventMouseMotion reference
- Fix CharacterBody's wall_min_slide_angle doc
- Document Glow Upscale Mode project setting only affecting Forward+/Mobile
- Improve BaseMaterial3D/Label3D/SpriteBase3D's fixed_size documentation
- Docs: Fix WorkerThreadPool wrong max thread value description
- Link Script method documentation to details about returned dictionaries
- AudioEffectCompressor: Recommend HardLimiter over deprecated Limiter
- Update logo/run icon path in platform READMEs
- Fix BBCode tag for NativeMenu class reference
- Fix incomplete description for ResourceLoader.list_directory()
- Clarify XRController3D get_input name corresponds to actions in the action set
- Improve documentation for return value of Packed*Array.resize
- Document RichTextLabel fgcolor and bgcolor padding behavior (and risk of overlap)
- Fix even more miscellaneous oddities around the class reference
- Fix typos in ProjectSettings class reference
- Add instruction to wrap nested classes in JavaClassWrapper
- Add Game workspace to documentation and autocomplete
- Fix hex_decode() example in String and StringName
- Minor doc update for low_processor_mode_sleep_usec editor settings
- Add color space alpha notes to Color documentation
- Physics Interpolation - Fix project setting tooltip
- Clarify that AcceptDialog's custom_action is only triggered if action is non-empty
- Add clarifications to PhysicsDirectSpaceState docs on how to get their instance
- Document CSGShape3D updates being deferred until the next frame
- Deprecate NavigationServer map_force_update()
- Clarify that Window.dpi_changed signal is supported on Linux (Wayland)
- Cleanup and unify DisplayServer screen methods and documentation
- Docs: Add note about console wrapper to get_stdin_type
- Improve Camera2D.zoom description to be less ambiguous
- Change "GDExtension example in C++" links to accommodate the new docs file structure
- Fix differences between RayCast2D and RayCast3D documentation
- Fix differences between PhysicsDirectSpaceState2D/3D docs
- Fix incorrect data format in RenderingDevice docs
- Fix typo in common note for packed arrays
- Fix typo in Window's exclude_from_capture
- Fix miscellaneous oddities around the class reference (part 4)
- Add missing word to canvas layer docs
- Fix some differences between OpenXRInterface and XRHandTracker docs
- Fix CodeEdit typos
- Fix misleading Material::render_priority description
- Fix typos in Image documentation
- Fix typos in UDPServer::poll documentation
- Improve documentation on is_nan() and NAN constant
- Improve get_cursor_shape() documentation
- Fix typo in the description of RandomNumberGenerator.state
- Normalize description of ResourceLoader.list_directory()
- Document Vector2.from_angle() not always returning a normalized vector
- Update ProgressBar description
- Document SceneTree.set_multiplayer() should be called in _enter_tree()
- Fix invalid AnimationNode documentation syntax
- Fix grammatical error in MeshInstance3D documentation
- Fix typo in sqrt classref
- Clarify the conditions that need to be met for a valid file name in Godot
- Fix a typo in the Light3D documentation
- Clarify the input action that affects AcceptDialog.dialog_close_on_escape
- Docs: Remove redundant info on the enum types used
- Add missing description of FileAccess.store_half behavior on error
- Fix description of EditorProperty's draw_background and draw_label
- Document the FileAccess read/write cursor
- Fix type error in InputEventAction.action description
- Doc: Add search keywords for Vector2/3.limit_length method
- Improve SpinBox class documentation
- Improve documentation for Array.get() and Packed*Array.get() methods
- Document output parameters of EditorImportPlugin.import
- Fix typo in Node.get_child documentation
- Improve description of Control.scale
- Clarify String.is_subsequence_of() working differently from String.contains()
- Add description for Skeleton3D.bone_list_changed
- Document EditorProperty behavior when the node isn't fully ready yet
- Clarify SceneTree.get_frame() description
- Improve the PhysicsShapeQueryParameters3D's description
- Update CameraFeed document for Android
- Fix extra parenthesis in Array.slice description
- Recommend Jolt Physics in SoftBody3D class reference
- Clarify set_initial_value()
- Clarify offset.y behavior for Sprite2D vs Sprite3D
- Fix incorrect note about holes in HeightMapShape3D
- Link demo project in AStar2D and AStarGrid2D documentation
- Fix copy-paste error in Viewport classref
- Clarify existence of custom project settings
- Update CameraServer document for Android
- Fix miscellaneous oddities around the class reference (part 5)
- Clarify parameters in @GlobalScope.wrap() being inclusive/exclusive
- Clarify the data param in the docs for RD.texture_create
- Clarify behavior of Node.physics_interpolation_mode in the class reference
- Clarify behavior of Timer.stop()
- Update Shortcut class reference
- Document the direction that directional and spot lights emit light in
- Improve description of fuzzy matching in editor settings documentation
- Add clarification to AudioStream.get_length
- Fix outdated MODE_FULLSCREEN description
- Fix various errors in the class reference
- Docs: Add few notes about screen capture
- Add warning about infinite recursion to NavigationAgent docs
- Add a note about navigation mesh baking issues when using 0 for the agent_radius
- Improve ResourceLoader.get_dependencies()'s description
- Add a note about _notification() being multilevel
- Clarify note in documentation about childing rigid bodies
- Remove angle constraint mention from SkeletonModification2DFABRIK class docs
- Docs: Fix typo and spacing in vector coordinates
- Reword text_editor/completion/add_type_hints's description
- Misc: Fix typo in cmd arg description
- C#: Fix Shortcut example
- Clarify _set/_get description
- Docs: Various grammar and spelling fixes
- Specifiy return value in several store methods in FileAccess
- Fix OptionButton ID value range documentation
- Document Gradient.sample() clamping behavior
- Clarify visible_characters
- Document that native file dialog is only available on Android 10+ devices
- Add example of using get_connection_list_from_node
- Fix signature in docs of EditorImportPlugin.GetOptionVisibility
- Clarify initialization of scene tiles
- Fix image download example code
- Class docs: Fix ReflectionProbe note regarding Compatibility renderer support
- Clarify that Network Mode is not mandatory for plugins
- Update auto_unfold_foreign_scenes description
- Document AnimationMixer.animation_started not being emitted for looping animations
- Document Translation plurals requiring the use of the gettext PO format
- Clarify type inference in ProjectSettings Inferred Declaration warning
- Fix spinbox formatting to fix linking
- Update documentation for DriverResource enum
- Add the C# code equivalent to the documentation of Viewport.GetTexture()
- Remove outdated note from EditorScript description
- Add search keywords for CheckButton and ButtonGroup
- Update HDR 2D documentation to include Compatibility support
- JavaClassWrapper: Add example to invoke constructor
- Improve documentation related to GridMap mesh/lightmap baking
- Clarify the behavior of RigidBody.CENTER_OF_MASS_MODE_AUTO
- Fix inaccurate description of get_current_rendering_driver_name
- Document Tree.item_collapsed also being emitted when the item is expanded
- Update _physics_process and _process docs to reflect implementation
- Document OS.get_video_adapter_driver_info() being slow to call the first time
- Add "dropdown" keyword to OptionButton and MenuButton
- Docs: PhysicsShapeQueryParameters3D fix function used in code example
- Clarify the types InputEvent.is_action_type() will return true for
- Docs: Mention 'build version' in iOS, macOS, and visionOS export docs
- Document ClassDB not storing information on user-defined classes
- Fix incorrect statement on thread (un)safety in AStar class reference
- Fix typo in doc of text_editor/theme/highlighting/gdscript/string_name_color
- Docs: Mark SVGTexture as experimental
- Clarify that EXCLUDE_FROM_CAPTURE only works with native windows
- Document REGION_RECT canvas shader built-in in Sprite2D region property
- Update ProjectSettings HDR 2D documentation to include Compatibility

Editor:
- Add a flag to make the connection automatically emit the source object
- Allow to override editor settings per project
- Allow to ignore debugger error breaks
- CodeEditor: Make possible to select and copy error text
- Add syntax highlighting for ConfigFile/TSCN/TRES/project.godot
- Make "access as/revoke unique name" a checkbox
- Don't save unnecessarily with save_before_running
- Add credits roll
- Add Open Dock shortcuts
- Add include/exclude to FindInFiles for filtering files
- Fix help overview tooltip flicker
- Fix documentation for built-in scripts
- Revert Solarized Dark theme to Godot 3
- Fix ProjectSettings name casing options and missing String methods
- Prompt user to terminate if quitting while project is running
- Allow empty click in scene tree dock
- ScriptEditor: Remove obsolete completion cache
- Fix dropping Node into script on non-empty line
- Fix copying a Node with a signal potentially resulting in an editor crash
- Autocompletion: Don't add parenthesis if Callable is expected
- Add option to copy a file's name in the FileSystem dock (reverted)
- Add PROPERTY_HINT_INPUT_NAME for use with @export_custom to allow using input actions
- Fix spaces converted to tabs in triple quote strings
- Enable Auto Reload Scripts on External Change by default in the editor settings
- Update Inspector when renaming a file via File System Dock
- SceneImportSettings update_timer should be a oneshot
- Rename internal view_menu in 3D editor code
- Translate main thread name in the editor instead of running project
- Automatically set text_editor/external/exec_flags based on the editor specified in exec_path text box
- Add "Close Tabs Below" option to script editor context menu
- Drop preload Resources as UID
- Add named EditorScripts to the command palette
- Add double to the version full build string when using a double-precision build
- Allow to select multiple remote nodes at runtime
- Add a TouchActionsPanel to Android Editor
- Remember state of built-in script/shader checkbox
- Always update .tscn name when "Save Scene As…" is pressed
- Add borders to BitMap in BitMapEditor
- EditorNode: Add function to load file as either scene or resource
- Don't initialize editor when exiting
- Mark main screen plugin names for translation
- Fix Error when connecting signal with unbinds not yet existing function
- Do not require editor restart when changing selection box color
- Eliminate interior mutability in get_selected_node_list
- Improve drag and drop into array property editors
- Use FlowContainer for EditorNetworkProfiler bar
- Fix error when toggling comment with empty lines
- Prevent changed signal spam on resource reload
- Fix empty type removal in theme editor causing all empty types to be deleted
- Don't synchronize scripts with errors
- Add editor setting to override tablet driver
- Prompt to Save As when saving all scenes
- Replace UID and Surface upgrade tools with universal one
- Fix EditorObjectSelector popup size
- Avoid some excessive edits of resources
- Minor adjusts in the Show in Filesystem code in SpriteFrames editor
- Fix vbox separation in sections with PROPERTY_USAGE_ARRAY
- Make EditorProperty and its child EditorProperty behave like sibling nodes when handling mouse events
- Keep ProjectSettings overrides right below the original setting
- Don't hard-code setting list in DependencyEditor
- Improve path validation in ScriptCreateDialog
- Add Save & Reload option to Reload Saved Scene
- Fix TextEdit scrolls wrong on text selection
- Set editor's translation domain at root node
- Restore "Show in File Manager" button functionality in ProjectManager
- Reorder properties in NoiseTexture2D/3D
- Redraw inspector section when cursor enters and exits header to update hover state
- EditorHelpBit: Fix symbol type name capitalization for text files
- Fix forcing ViewportTexture after selecting a viewport in the "Pick a Viewport" popup
- Update script modified times when saved in EditorNode
- Don't edit objects when loading folding
- Re-grab FileSystem focus after rescan
- Inspect SceneTree node when dragged over
- Remove unused Reload button
- Update MultiNodeEdit property list on edited nodes' property list changed
- Fix ownership when pasting non root with child nodes in new scene
- Validate custom directory when project is started
- Fix recovery mode lock file not being cleared on import/export
- FindReplaceBar: Fix "Replace (All)" buttons repositioning, improve "Hide" button visual feedback
- Save queued ProjectSettings changes immediately when settings dialog is closed
- Make project manager's "last edited" field display use local time instead of UTC
- Add Embed Game Window shortcut hotkeys support for suspend/pause and next frame buttons
- Fix stuck editor cameras and fix 3D error spam for non-finite transforms
- Allow opening a project in verbose mode from the Project Manager
- Improve Sphere gizmo performance
- Debugger: Allow locating VRAM resource by double-clicking
- Fix global classes can't be used in the Evaluator
- Add "Paste as Unique" option to the editor resource picker dropdown
- Improve editor 2D/3D main screen auto-switching logic
- Improve Audio Stream Player Gizmo Performance
- Defend against directories without trailing slashes
- Don't show Extend Script option for built-in scripts
- Fix debugger's memory leak when project closes itself
- Improve default/no query quick open dialog behavior
- Fix Game view visual streaking when selecting nodes with Physics Interpolation enabled
- Focus Don't Save in Reload Saved Scene and don't save unmodified scenes
- Don't allow empty string when splitting allowed types and allowed subtypes in _is_drop_valid() in EditorPropertyArray
- Fix error panel auto-hiding
- Fix wrong height for top editors in the inspector
- Fix Run Instances window being too big in single-window mode for window at minimum size
- Fix ThemeEditor being too wide for small screen or minimized window
- Fix Node dock broken right after opening project
- Create .uid files for detected new files
- Prompt to restart when project data (.godot) is missing
- Set window position when running project in maximized or full-screen mode to ensure it is opened on the correct screen
- Fix editor crash when inspecting 2 objects handled by the same plugin
- Fix editor crash on overrides for non-existent input mappings
- Call plugin edit before making visible
- Change root node transform warning to only show up for position
- Fix blank popup menu on EditorResourcePicker
- Fix vbox separation for inspector subgroups
- Scene Tree prevent inspecting node while scrolling
- Fix use after free in the editor inspector section cleanup
- Fix icons with non-ASCII file names in project manager
- Simplify ScriptEditorDebugger::_parse_message; separate into handler functions
- Revert "Add option to copy a file's name in the FileSystem dock"
- Fix embedded help menu icons
- ColorChannelSelector: add tooltip, fix toggle_button repositioning and channels autotranslation
- Hide 3D mode in Game view if the feature is disabled
- EditorResourcePicker: Add Quick Load button
- Fix crash when removing breakpoints from DAP, and multiple fixes
- Fix regressions regarding multiple remote object selection
- Change .build extension for engine build profiles to .gdbuild
- Remove New prefix from EditorResourcePicker
- Project manager: Add option to backup project when it will be changed
- Fix _delete_internal_files() receiving wrong path
- Add several new physics-related icons
- Fix create root node dialog to follow preferred node name casing
- Use the correct root inspector when making elements moved in an array visible
- Handle null values for object types, as seen in typed dictionaries
- Fix EditorNode3DGizmo::add_solid_box() GPU stalling
- Fix setting root inspector's follow_focus to true when update_tree() method ends
- Fix Cannot get class error when searching TextFile/OtherFile in FileSystem dock
- Fix remote object inspector through DAP
- Fix input config dialog overflow on Android Editor
- Remember last POT generator path
- Refactor SceneDebugger::parse_message into handler functions
- Fix Edit option for sub-resources
- Fix BitMapEditor crash when bitmap is empty
- Display PortableCompressedTexture's format in inspector preview
- Cleanup QuickOpenDialog history and fix UID errors
- Android Editor: Add an editor setting to enable/disable TouchActionsPanel
- Fix error spam when inspecting remote nodes outside the tree
- Add UID to file tooltip
- Validate custom directory when running from editor
- Reset ProjectSettings scroll when changing category
- Android Editor: Add new actions and enhancements to TouchActionsPanel
- Fix exported Node/Resource variables resetting when extending script in the SceneTreeDock
- Use separate EditorFileDialog for "Pack Project as ZIP"
- Move THREADS_ENABLED check after common imports
- Add Engine Version Update Mode button to Project Manager Quick Settings
- Remove focus draw for editor inspector elements
- Remove "dummy" renderer from the editor dropdown
- Search custom types when filtering on type in the SceneTree dock
- Fix visual shader editor popups not using editor scale
- Add fuzzy filtering to the script filtering
- Add fuzzy search to method filtering
- Add enable checkboxes to editor sections
- Fix issue with playing a custom scene from a UID
- Update donation link to fund.godotengine.org
- Rename editor setting Engine Version Update Mode to Check for Updates
- Support custom features in project settings dialog
- TextureEditorPlugin: Add borders to 3D and Layered editors
- Add separate editor accessibility mode setting
- Add inspector support for typed property hint formats
- FileSystemList: Fix edit popup not accounting scroll position
- Fix Sublime text external editor Exec Flags setting
- Fix division by zero when scaling
- Add EditorInterface::close_scene()
- Embed TouchActionsPanel directly into the Android editor UI
- Make the position and the size of FileSystem controls more precise
- Fix EditorInspector tooltip disappearing in special cases
- Allow Inspector Section Checkboxes to hide features, Add "On" text to checkboxes
- Hide one-click deploy button on Android and XR editor
- Change editor button focus mode to FOCUS_ACCESSIBILITY
- Make documentation ignore undocumented private signals
- Add inline color pickers to script editor
- Walk up inheritance hierarchy when finding which script's docs to open
- Fix Signals dock only un-doubling parent class's first signal
- Remove deprecated engine_version_update_mode editor setting
- Fix group name completion for get_node_count_in_group
- Fix empty Script Editor members overview visible
- Fix class reference discrepancy when using --doctool with TextServerFallback
- Add original index field to fuzzy search result
- Make script_class_get_icon_path() return any value when r_valid is passed
- Add editor setting to collapse main menu into a MenuButton
- Unify shortcut handling in FileSystem dock
- Fix Set focus on right control on user action "show in file system"
- Set current directory when using "Save Branch as Scene..."
- Improve zoom performance in Script and Shader editors
- Allow undoredo actions to not make history unsaved
- macOS: Additional improvements and fixes for embedded window support
- Remove redundant line_spacing editor setting
- Fix editor crash when middle mouse button is clicked on empty space in scene tabs
- macOS: Embedded window fixes
- Remove Don't save button from "running project" confirmation modal
- Script Editor: Fix Ctrl-Drag unique-name Editable Children
- Fix some extensions missing in resource load dialog
- Force weights on custom editor fonts when variable
- Add dropdown to Movie Maker button in editor run bar to access settings
- Fix EditorNode::drag_resource crash
- Do not grab focus on filename LineEdit in EditorFileDialog when outside the tree
- Make errors override warnings in script line coloring
- Optimize unsaved history checking
- AudioStreamImport: Make play and stop buttons accessible through keyboard
- Allow running EditorScripts from the FileSystemDock
- Draw checkerboard (or clear color) under embedded window
- Fix EditorHelp's FindBar search index
- Fix highlighting warning and error issues
- Fix redundant signal connection in TextureRegionEditor
- Fix potential crash when checking unsaved history
- Android: Don't request CAMERA permission on editor startup
- Fix GridMap scenario crash when outside tree
- Make FindInFiles globally accessible
- Reintroduce the dragging method of Sprite2D's region_rect
- Fix error when closing all scene tabs on the last tab
- Fix MSVC warning for potential mod by 0 (C4724)
- Fix MovieWriter window title in embedded mode
- Fix print/error ordering issue in editor Output
- Ignore rename shortcut when Remote tab is active
- Fix Ignore External Changes Bug
- Allow toggling UID display in path properties
- Assign base path when creating Resource
- Add highlight around docks when dragging
- Duplicate Folder: Fix to remap references between duplicated files
- Android Editor: Disable nomedia file creation for Android 11 (api level 30)
- Fix missing popup item defined in EditorContextMenuPlugin with slot CONTEXT_SLOT_FILESYSTEM_CREATE
- Fix EditorContextMenuPlugin CONTEXT_SLOT_FILESYSTEM_CREATE does not receive path information for some menus
- Reorganize scroll and zoom elements in the audio import dialog
- Decrease font placeholder opacity in the editor theme
- Align autoload popup columns to the left
- Add class icon cache to EditorNode
- Cleanup header includes for AddMetadataDialog
- Improve Variant type menus in the editor
- Remove parentheses around "All" option in the feature tag menu
- Improve EditorInspectorCategory
- Fix get_class_icon() ignoring fallback
- Texture format error on export: Show project setting
- Add file search QoL when focused on folder text box
- Add support for taking embedded window screenshots
- Explicit SceneDebugger parse_message handlers
- Fix scene reload causing segfaults when non-existent node is currently selected
- Fix Debugger Dock bottom margin
- Describe "Fuzzy Search" in Quick Open tooltip
- Add OS::open_with_program for opening files/directories with a specific program on macOS
- Doc: Add "required" qualifier to methods
- Fix crash when inspecting Variant export variable
- Fix multi-instance behavior with embedded game view
- Improve Input Map and Shortcuts editor
- Fix capitalization for visionOS and tvOS
- Add memory amount to output from the Copy System Info editor action
- Fix hint.radians_as_degrees on Vector2 and Vector4 editor properties
- Fix Game runtime debugging in the Android Editor
- Fix not being able to open directory in certain terminals
- Filesystem dock: Fix thumbnail size not updating instantly after changing editor setting
- ProjectSettings: Fix missing property hint of setting overrides
- Unhide one-click deploy button on Android and XR editor
- Fix the editor shortcuts for the game menu on Android
- Fix crash when save_on_focus_loss is enabled
- Fix CSV translation not updating after reimport
- Fix FileSystemDock signal connection for path navigation text box
- Fix some inspector action buttons not updating icon when theme changes
- Fix favorite folder colors
- Fix debugger inspector minimum size
- Fix problems with scripts and metadata in remote objects
- Avoid manipulating PackedScene cache when generating scene preview thumbnails
- Fix editing ShaderInclude causes a Shader to be edited
- Fix game view window not updating title when translation changes
- Fix root node auto translation settings affecting editor root
- Make PROPERTY_HINT_GROUP_ENABLE hide properties by default
- Add "See Migration Guide" button to the Project Manager
- Add null check on generating thumbnails for PackedScene
- Free nodes from instantiating if it is not a Control in the theme editor
- Fix crash in ConnectionsDialog
- Do not remove SubViewport nodes in thumbnail preview scene
- Clear current path when deselecting files
- Don't update script documentation when exporting
- Check UID to disable "Set as Main Scene" in FileSystemDock
- Fix doctool crash and errors on macOS
- Fix Evaluator's format issues caused by special characters in the expression
- Swap UID and path buttons
- Revert "Rework scene preview thumbnails"
- Use one-based line numbers for external text editors
- Fix aspect ratio of small thumbnails
- Fix can't convert to ShaderMaterial in FileSystemDock
- Fix Resource doesn't update when overwritten in editor
- Expose ScriptEditor.clear_docs_from_script
- Fix ScriptEditor inline colors float handling
- Fix updating project settings after move
- Fix resizing error when generating thumbnails
- Generate scene ID for created built-in Resources
- Don't rename nodes when tree is invisible
- Fix subinspector for parameter preview in visual shader editor
- Properly show detach script button when script is added via inspector
- Fix PROPERTY_HINT_GROUP_ENABLE display on hover
- Fix remote deselection not working when selection limit is reached
- Fix filtered out nodes not getting deselected
- Fix and improve auto-translation for FindInFiles
- Fix can't remove inspector plugins after reaching max count
- Fix error when "Toggle Files Panel" in shader editor
- Fix main editor title after changing language
- Improve error when update_doc() fails
- Scroll scene tree dock when moving item(s) with keys
- Fix ScriptEditor inline color wrong line number
- Fix some Text Editor theme issues and clean up
- Fix MissingNode {get,set}_original_scene bindings
- Fix unwanted resource duplication in the theme editor
- Android Editor: Reduce default gizmo scale multiplier
- Fix crash when specifying --debug-server
- Fix new autoload scripts using file name instead of user defined name
- Fix error when dragging non-resource file
- Prompt to save modified scene missing when quitting editor with running project
- Cancel save dialog on editor exit
- Fix debugger immediate disconnect
- SpriteFramesEditor: Decompress texture before auto slicing sprite sheet
- Fix the absolute NodePath was calculated incorrectly when "Reparent to New Node"
- Fix hidden scrollbar in editor settings
- FIX: Prevent crashing if max_threads is zero. (reverted)
- Fix FindInFilesPanel sizing issues
- Save the changes before duplicating resource files
- Fix crash in SceneTreeDock when closing a scene with a selected node
- Fix ProgressDialog errors during first scan
- Use EditorUndoRedoManager to track the property changes of the configured InputEvent in the plugin
- Prevent invalid and ambiguous tag names
- Fix snapping logic in Range
- Clear SceneTreeDock's previous node selection when removing edited scene
- Use point_grab_radius setting in Polygon2DEditor bottom panel editor
- Fix inconsistent thumbnail width
- Fix inheriting from abstract classes dialog
- Keep collapsed state for actions when modifying Input Map
- Add new line when dropping onready on empty line
- Fix remote tree max selection warning not showing properly
- Don't open folders as file in script editor
- SceneCreateDialog: Hide 3D Scene option when 3D editor is disabled
- Strip empty deps when loading filesystem cache
- Add hover styles to buttons in Script/Shader editor
- macOS: Remove FEATURE_MOUSE from embedded display server
- Fix/remove error about "Can't update documentation" when saving script
- Fix editor resource tooltip crash on broken symlinks
- Track last selection using ObjectID
- Don't start editor as unsaved
- Remove nearly-unused "default" range hint min/max
- Rescale values to better utilize R128 range before snapping
- Allow extending previously-non-abstract scripts that became abstract
- Add single-object inspect command backwards compatible API for potential regression
- Add missing range hint to Viewport.oversampling_override in the editor
- Fix Range scale overflow
- Fix "SpriteFrames" editor not fully hidding the bottom panel

Export:
- Use project settings overrides with the target preset features instead of current platform features
- Modify Windows template without rcedit
- Update Windows icon cache after export
- Convert uid:// names to res:// when exporting files
- Fix apksigner execution failure on linux
- Add shader baker to project exporter
- Hide debug keystore export settings
- Fix Inspector checkable button sizing
- When code signing, specify which keystore is not found
- Updates and fixes to the Android prebuilt export logic
- Add "Go Online" button on Export Template Manager
- [iOS export] Restore one-click deploy device enumeration using Xcode
- Use text_overrun for project export errors
- Android: Convert compress_native_libraries to a basic export option
- Change unportable echo in the Linux/macOS debug launcher script
- Web: Use actual PThread pool size for get_default_thread_pool_size()
- PCK: Move directory to the end of file, write exported/saved PCK in place
- Improve editor progress reporting on the command line
- Compile out editor-only logic within _validate_property in export template
- Android: Implement sparse bundle PCK support
- Android: Add support for 16 KB page sizes, update to NDK r28b
- Remove the gradle_build/compress_native_libraries export option (reverted)
- Add support for exporting to Google Play Instant via Google Play Instant Export Option (reverted)
- Android: Misc build fixes
- Android: Add export option for custom theme attributes
- Fix ios plugin always invalid due to null ConfigFile
- Show shader baker related export warnings only if enabled
- Revert "Add support for exporting to Google Play Instant"
- Apple: Improve Apple embedded export and debugging
- Fix export fail on Android if shader_baker is enabled
- Revert the removal of the gradle_build/compress_native_libraries export option
- Move Web export threads options out of variant mk2
- [Windows export] Move debug symbol sections on export
- [Windows export] Use project version as fallback
- Remove selective shader baking
- Reduce log spam during headless import/export
- Android: Thread Syncronization for FileAccessHandler
- Fix headless import/export reporting progress greater than 100%
- Android: Fix build command for AAB export
- Add default param value to EditorExportPlatform::get_forced_export_files
- Fix editor export plugins always causing resources to be edited

GDExtension:
- MovieWriter: extension support
- Expose the EditorScriptHighlighter::_create() method to GDExtension
- Check if class without recreate callback is creatable, before marking whole extension as unreloadable
- Add speed scale feature for VideoStreamPlayer node
- Make use of latin1 encoding explicit in gdextension_interface.cpp
- Add interface functions for Object::set_script_instance()
- Prevent instantiating classes that aren't exposed
- Include precision in extension_api.json
- Add status to get_godot_version
- Correctly register editor-only OpenXR* classes' api_type
- Register editor classes normally, rather than via ClassDB::set_current_api()
- Add mechanism to get which classes an extension is using
- Optimize gdvirtual function layout
- Allow instantiating unexposed EditorPlugin from GDExtension
- Print Godot version when an extension is found to be incompatible
- Fix GDExtension Object/Node::to_string to check is_valid before returning the result
- Web: Fix crash when built with dlink_enabled=yes
- Fix GDExtensionLoader using the wrong super type in GDSOFTCLASS
- Fallback to ScriptInstance::get_property_state when get_property_state is not implemented in ScriptInstanceExtension
- Add function to register main loop callbacks
- Always run shutdown callback before deinitializing any levels
- Fix minor inconsistencies and errors in gdextension_interface.h
- Restore graph_offset property
- Prevent compatibility breakage from change to ClassDB::instantiate() for unexposed classes
- Call startup callback only after reload is fully finished
- Postpone adding new extension plugins to the editor
- Fix WindowUtils::copy_and_rename_pdb regression
- Fix classdb_register_extension_class* documentation in core/extension/gdextension_interface.h

GDScript:
- Add abstract classes to GDScript
- Optimize non-constant for-range
- Highlight script members like native ones
- Re-add ord() function
- Add constant Array and Dictionary constructors
- Add support for variadic functions
- Allow exporting variables of type Variant
- Autocompletion: Fix type resolution when assigning variant
- Fix call hint appearance for complex callees
- Add tests for calling with wrong arguments in Callable.callv() when passing a readonly (const) Array
- Fix autocompletion issues with nested types
- Scripting: Fix script docs not being searchable without manually recompiling scripts
- Fix Callable call error text
- Add _enable/_disable_plugin to plugin script template
- Core: Unify display of error type prefixes
- Improve consistency of code regions
- Fix crash when using a modulo operator between a float and an integer
- Improve GDScript editor support for global enums
- Do phrase level recovery when parsing faulty dictionaries
- Highlight warning lines in Script editor
- Cancel suspended functions when reloading a script
- Optimize GDScriptLambdaCallable by skipping the unnecessary ObjectDB lookup for script
- Implement class detection in GDScript for build configuration
- Remove dead code in GDScript function CallState
- Fix crash related to #region/#endregion caused by trailing spaces
- Fix head class range to include class_name
- Add clearing of static_gdscript_cache to GDScriptCache
- LSP: Fix file URI handling + warn about workspace project mismatch
- Return early when parsing invalid super call
- Add specific errors for use of keywords removed in Godot 4
- Fix a few GDScript warning messages for grammar and consistency
- Fix invalid DAP responses when content has non-ASCII content
- LSP: Fix relative path handling for document links
- LSP: Don't advertize support for workspace symbols
- Add autocompletion for @export_tool_button
- LSP: Extract annotations from EditorHelp
- Fix LSP not returning expected localization for API docs
- LSP: Account for unicode identifiers
- Do phrase level recovery for match
- Add @export_file_path to export raw paths (no UID)
- Autocompletion: Remove additional parenthesis from utility function options
- Update get_stack(), print_stack(), and print_debug()
- Fix GDScript stack leak
- Add code completion for user-defined methods when overriding in GDScript
- Add abstract methods
- Fix script backtrace reporting wrong line numbers in release exports
- Bump script bytecode version after token enum change
- Remove leftmost_column and rightmost_column fields
- Fix crash on exit due to GDScriptLanguage::CallStack mismatched deallocation
- GDScript call stack as reverse linked list with fixed coroutines
- LSP: Fix class documentation to include brief
- Add missing type conversions in for range
- Fix a crash when the first line of GDScript code is indented
- Autocompletion: Don't use next for GET_NODE inference
- Fix errors not being emitted when debugger breaks on script errors
- Replace abstract keyword with @abstract annotation
- Autocompletion: Don't filter overrides when the existing function is the current one
- Autocomplete: Avoid prepending literals when the character has already been typed
- Fix double spaces for type hints when connecting signal
- Fix GDScriptLanguage::make_function()
- LSP: Don't poll during editor setup
- Don't get invalid dictionary key during completion
- Fix lookup symbol for super()
- DAP: Cast request's seq value to int
- Fix Variant properties losing value upon script update
- Web: Disable GDScript LSP
- Properly detect native class on static call optimization
- Fix crash when GDScript scripts are reloaded during initial import
- Autocompletion: Push empty call for lambdas
- Autocompletion: Don't call const functions
- Don't stop annotation argument parsing at file end
- Fix range helper method using 32-bit ints for arguments
- Fix GDScript::reload leaving reloading as true on failure
- Improve error messages for lambda functions without a body

GUI:
- Add built-in GUI to display license notices (reverted)
- Rework AcceptDialog's ok button text
- Windows: Remove visible WINDOW_MODE_FULLSCREEN border by setting window region
- Editor: Add ability to rename theme types
- Fix words not being selected by endpoints
- Remove NOTIFICATION_ENTER_TREE when NOTIFICATION_THEME_CHANGED is used
- Fix incorrect submenu icon and accelerator text positions involving margins
- Fix wrong tooltip behavior in PopupMenus that have styles with top borders
- Add theme cache to the inspector
- [TextEdit / LineEdit] Add support for OEM Alt codes input
- Fix unfocused windows can't be dragged
- Allow changing the color for the Checkbox's checked and unchecked icons
- Consider search keywords in CreateDialog
- Remove _FORCE_INLINE_ from TextServer*::_ensure* methods
- Fix changed signal emission in Curve::set_point_offset
- Implement properties that can recursively disable child controls' Focus Mode & Mouse Filter
- Fix GraphEdit connections not updating when a child of GraphNode goes invisible or changes size
- Improve native file dialog parent window selection
- Tree: Fix relationship lines 1px width draw bug when MSAA anti aliasing is enabled
- Fix and improve editor state persistence for the VisualShader editor
- Improve ColorPicker picker shape keyboard and joypad accessibility
- Refactor ColorPicker shapes
- Augment unit tests for OptionButton
- ColorPicker: Allow other color wheels in okhsl mode
- Tree: highlight selected items on hover
- Fix spinbox decimal issues when update_on_text_changed = true
- Fix UI navigation breaking on invisible controls
- Add movement threshold before activating viewport rotation gizmo dragging
- Add get_connection_list_from_node function to GraphEdit
- Linux: Implement native color picker
- Remove confusing Control::is_top_level_control()
- TextEdit: Use actual indentation offset instead of space width for wrapped lines
- Use LocalVector<Glyph> in TextServerAdvanced to reduce reallocation
- DisplayServer: Decouple show_window(MAIN_WINDOW_ID) from DisplayServer constructor, update project manager size/position after DS init
- Optimize text rendering by caching UBreakIterator instances
- Fix ColorPicker sliders in overbright RGB
- Add FoldableContainer
- Display the actual used theme items in the Inspector
- Fix error when embedded popup is closed while resizing
- TextEdit: Improve wrapped line indent handling
- Expose OVERRUN_ENFORCE_ELLIPSIS flag to the controls
- Fix viewport scaling at intermediate resolutions
- Fix MenuButton style in editor top menu bar
- Fix Tree keyboard navigation in RTL direction
- Fix Tree buttons jiggle on horizontal scrolling
- Apply fix_alpha_edges for both theme icons and font glyphs
- Add tooltip for StyleBoxPreview grid button
- TabBar: Add boolean toggle for middle-click to fire tab_close_pressed signal
- Fix black bars appearing when using background_color on a TextEdit/CodeEdit
- Fix PopupMenu clickable area with shadows
- Add tab spacing modifier for tabs in TabBar and TabContainer
- Fix invisible ItemList cursor in editor theme
- Add tree multiselect with shift up & down arrow keys
- VideoStreamPlayer: Stop video on exit tree
- ItemList multiselect with shift up & down arrow keys
- Keep editor SceneTree buttons attached to the cell in Right-To-Left
- Fix text shadow outline draw batching
- LineEdit: Fix caret_force_displayed
- Add space for BBCode Ordered Lists
- ColorPicker: Add an intensity slider to all modes for HDR
- Allow TabBar drag and drop to be overridden and add tab mouse tests
- StyleBoxFlat: Fix glitchy overlapping shapes
- Use Viewport's default texture filter/repeat in GUI tooltips
- Fix popup location for PROPERTY_USAGE_ARRAY inspector items
- Apply transforms for LineEdit, RichTextLabel, and TextEdit popup positions
- RTL: Fix custom effects not updating
- Fix SceneTree's rename LineEdit's offset position
- Label: Fix min. size calculation counting extra spacing twice
- Make embed floating window respect Always On Top configuration
- Editor: Change global menu icons theme independently of editor theme
- Fix SceneTree Item text display bug in Right-to-Left
- Fix memory leak caused by hidden tooltip controls
- Fix GraphNode port positions of children with size flag expand
- Add auto translate mode for items in PopupMenu and OptionButton
- Slider: Add bottom and top ticks and tick offset
- Show theme_type_variations in the inspector on Controls that inherit a theme
- Scroll EditorInspector while drag & drop hovering near the edges
- Sync display/window/size/initial_position_type and Window::WINDOW_INITIAL_POSITION_ enum
- Fix focus cycle through window
- Add missing ETR/TTR markups
- Tree: Fix dragging unselected item when a selection already exists
- Apply gizmo scale to EditorControlAnchor
- Fix the TreeItem rename LineEdit is offset
- Fix folding arrow and relationship lines move to 2nd column
- Fix game crashes when adding color preset after clearing presets in another control
- Add properties to configure space trimming on line break
- Prevent clicking of TreeItem buttons when letting go outside of the button
- Fix ScrollContainer focus border issue
- Fix inspector theme not updating when theme changed
- Fix smooth scrolling being tied to physics process
- LineEdit: Fix selection rectangle when text overflows container
- Fix Control.set_position resizes offsets/anchors (reverted)
- Tree: Fix offset relationship lines with Hide Folding
- Improve Popup content_scale_factor
- Optimize TextServerAdvanced::_add_features by using iteration instead of .values() and .keys()
- Fix reparenting control does not update recursive mode cache properly
- Optimize startup times by avoiding loading fonts twice
- Fix excessively calling resized and floating point errors in Control
- Optimize startup times by using ubrk_clone instead of ubrk_open
- RTL: Fix float and int matching in FX environment
- Fallback Control.layout_mode to valid mode when child of non-container control
- Fix and simplify hit calculation in PopupMenu::_get_mouse_over
- CI: Fix godot regression project test
- RTL: Fix size/alignment of tables with padded cells
- RTL: Improve vertical padding
- Remove macros from FontFile test case
- Implement Stackable Text Outline on Label
- Fix TextEdit VScroll max tolerance
- Replace global oversampling with overrideable per-viewport oversampling
- Add font import flag to toggle modulation of colored glyphs
- Make swap_cancel_ok setting 3-state instead of boolean
- Linux: Detect KDE/LXQt and swap OK/Cancel buttons to Windows style
- macOS: Fix native menu submenu items have wrong action and accelerators set
- Fix wrong translation method in FileDialog
- CodeEdit: Fix folding for comments mixed with code region tags
- Fix EditorSpinSlider Scroll Edit when inside a ScrollContainer
- Add custom sort to center tab bar in the editor and project manager
- Add separate minimize_disabled and maximize_disabled window flags
- Fix EditorHelpBitTooltip in single window mode
- Fix initial project manager size and scales < 1
- Fix and rename mouse filter recursive behavior and focus mode recursive behavior
- Fix shadow offset larger than shadow size in PopupMenu and PopupPanel
- RTL: Track external changes in the custom fonts set by BBCode / push_*
- Fix graph node resizing
- Fix exp_edit description
- Remove debug focus rect draws from MenuBar and GraphNode
- RTL: Fix VC_GLYPHS_RTL visible character trimming mode
- Fix GraphNode frag/vert port positions misaligned
- Implement SVGTexture auto-scalable with font oversampling
- Queue hover update when creating TreeItem
- Fix bitmap font scaling
- Fix typo ovrsampling → oversampling
- Fix fixed size image fonts incorrectly getting oversampling applied if set to native size
- Fix custom scale sometimes not applied to the project manager window size
- Fix X11 boot splash scaling
- Fix incorrect title bar sorting in RTL layout
- Fix regression causing jittery canvas transforms
- RichTextLabel: Add methods to compute the height and width of a line
- [ColorPicker, macOS] Add link to request required screen recording permission
- Unify ScrollBar/ScrollContainer scroll delta
- Add [br] to bbcode parsing for rich_text_label
- Improve default OK text in AcceptDialog
- Add drag zoom feature with CTRL+MiddleMouseButton
- Selectively apply FOCUS_ACCESSIBILITY to the Labels instead of setting it by default
- SvgTexture not in 3D
- Change FileDialog's Tree to ItemList
- Improve FileDialog options
- [LineEdit/TextEdit] Add composite character backspace delete and get composite character positions
- Add favorites and recent directories to FileDialog
- Add file sort to FileDialog
- Use same oversampling granularity as fonts use for SVGTextures
- Fix AnimationNodeBlendTree crash on Open Editor button press
- Fix item translation and icon in the Anchors Preset dropdown
- Improve edited scene layout direction detection
- Rename FoldableContainer's text to title
- Fix ColorPicker preset button format string typo
- TextEdit: Fix caret cut of in RTL layout, account for wrapped line indents in accessibility updates
- ScrollContainer: Fix focus rect draw position in RTL layout
- Add thumbnail mode to FIleDialog
- TextEdit: Fix margin rounding at sub 100% scale
- TextServer: Fix outline size and image fonts with oversampling
- Improve ColorPicker
- Editor: Allow non-finite values in Range
- Fix background size calculation in TreeItem
- Fix oversampling for embedded windows using content scale
- Some QOL and cleanup to EditorHelp's FindBar
- Add option for a touch-friendly drag handle in SplitContainer
- Allow Control Rect tool to not snap to pixel
- Move alt_code_oem437 and alt_code_cp1252 to separate header file
- Show "No Recent Scenes" under Open Recent instead of redundant button
- Add missing dictionary and array type hints
- Add property to control showing the virtual keyboard on focus events
- Fix unexpected control position change when left/top offsets not match pos_cache (reverted)
- Change Selected value for OptionButton when last item is deleted
- Fix TabBar Hidden Tabs Handling
- Fix FileSystemTree rename TextEdit is offset
- Accessibility: Account for window scaling transform when setting node bounds
- RTL: Add options to override underline color and default alpha
- Copy all text in RichTextLabel if nothing is selected
- Cleanup header includes in Tree
- Revert #104357 and #106141 to fix Control RTL position
- Fix TabContainer not respecting tabbar_background's margins
- Web: Fix LineEdit select_all_on_focus behavior when using a virtual keyboard
- Fix LineEdit with secret checked reveals the secret when a selection is dragged
- Adjust SVG in OT scaling and baseline
- Lazy create menu and slider nodes in Tree
- Adjust hex code box baseline calculation
- Deselect invisible TreeItems
- Move some accessibility properties from Node to Control
- Add hardcoded baseline offset for Apple Color Emoji
- Improve SVGTexture lazy loading
- Allow customizing FileDialog's features
- Use OkHSV for RichTextLabel rainbows
- Call PopupMenu min. size calculations after about_to_popup signal processing
- Use TabContainer material for internal TabBar
- Do not activate accessibility when screen reader detection failed
- Fix Android editor UI
- Add missing TRANSLATION_CHANGED notifications
- Fix MenuBar min size not updating after child rename
- VideoStreamPlayer: Fix sync with the scene tree
- Remove freed up FontForSize data from oversampling_levels
- Fix SCROLL_MODE_RESERVE with RTL layout
- Fix CodeEdit hover word lookup
- Clamp FontFile Face Index to a valid range in the inspector
- macOS: Fix borderless window maximization
- Fix window embedding for windows with force_native enabled
- Accessibility: Always auto-translation mode for names/descriptions
- Check script sample characters to filter out incorrect script support information
- Fix LineEdit continues to force showing the caret after drag is aborted
- [SVG in OT] Fix rendering of some glyphs using "defs" with "#glyphXXXXX.X" id
- Make BaseButtons' shortcut feedback timers internal
- RTL: Fix outline offset
- Unify get_[_visible]paragraph/line_count behavior
- Fix LineEdit's caret desyncing issue when toggling secret mode
- ColorPicker: Fix cursor position in okhsl circle
- ColorPicker: Add okhsl HS and HL rectangular picker shapes
- Ensure hiding AcceptDialog OK button keeps other buttons centered
- Don't store deprecated auto_translate property for Window
- Spinbox: Fix incorrect step and decimal text when using custom arrow step
- Fix window title drawn outside the title bar
- RTL: Add paragraph separation theme property
- ItemList: Fix text drawing not taking h_separation into account in top mode
- Fix visible ratio when displaying all characters in Label
- RTL: Decouple image width/height "in percent" properties. Add [hr] tag support
- Partially revert 107110, process all lines in VC_CHARS_BEFORE_SHAPING mode to return correct line count
- Improve performance of visible_charactersupdates in VC_CHARS_BEFORE_SHAPING mode
- Fix IME window position not taking into account window transform
- Fix ScriptEditor error line out of bounds
- Add line_breaking_strictness project setting
- Move font related project settings definitions to TextServer
- Multiply contents minimum size by scale factor
- Fix set_force_native when window is not in tree
- Rename TreeItem's alt_text to description for consistency with Accessibility API
- Fix scale and position of popups with force_native
- Fix some menu bar items unresponsive after language change
- Cleanup accessibility names
- Restore per font oversampling override
- Android: Address API 35 UI behavior changes
- GraphNode: Fix slot focus rect draw, make slot focus mode configurable
- Tree: Fix handling of __focus_rect with various Select Modes
- Fix custom Text Editor theme changes on reload
- SpinBox: Fix custom_arrow_step by snapping it to step
- Android: Don't exclude display cutout in immersive mode
- Fix: TabBar/TabContainer can't start with all tabs deselected
- Fix ColorPicker linear mode sliders color
- Fix typo in TextParagraph.direction hint string
- Deactivate orientation gizmo on window exit
- RTL: Add option to scroll follow visible characters
- Draw guide lines over selection and focus styleboxes
- [Code Editor] Fix "Pick Color" menu option replacing multiple color items
- Fix incorrect anchor preset when custom offset is set (reverted)
- RTL: Add method to get visible content bounding box
- RTL: Fix padding and alignment of embedded image clicks
- Fix export path "leaking" between presets
- Android: Fix system bar regression
- Fix TabBar minimum size with clip_tabs enabled
- RTL: Fix text selection offset in padded cells
- TextEdit: Draw guidelines under the text and caret
- Wayland: Workaround tooltip issues
- Add minimum scale to shader list
- Use double consistently in Range::get_as_ratio
- Fix inconsistent column in Tree click detection
- SplitContainer: Fix inability to override touch dragger icon and add theme colors to touch dragger
- Deprecate updown icon
- Web: Fix Web MouseWheel scrolling
- TextServer: Fix soft hyphen font fallback
- Fix ColorPresetButton preset_focus is set to wrong type in default theme
- Fix editor one-click icons not showing
- Fix TextEdit line wrap indent when disabled
- Fix RichTextLabel nested tables not sizing properly
- Fix button down signal not emitting on first press after being disabled
- Fix font fallback for lines with only non-visual/control characters
- Fix Tree cell text vertical alignment
- Update GraphNode selection logic if not visible
- Accessibility: Process non-focusable windows (popups, menus) as part of the parent window tree
- Avoid color conversion roundtrip in colorpicker
- Add SVGTexturesupport to NinePatchRect, TextureProgressBar and StyleBoxTexture
- SVGTexture: Always use real values for texture_set_size_override
- Use non-MSDF fallback for MSDF fonts if fallback is a color or non-scalable font
- Break batch on Compatibility when primitive texture changes
- Fix LineEdit center alignment
- Fix some localization issues in controls
- Revert "Fix incorrect anchor preset when custom offset is set"
- TextServer: Fix caret hit test rounding
- Use MSDF instead of MTSDF for font rendering
- Fix issues searching RichTextLabel when search result is in a table
- Disallow clicking to toggle the checkbox of a theme override of type Resource to checked
- LineEdit: Fix double click not selecting single character words
- ThemeEditor: fix to show filename for new/renamed files
- Fix missing hover style for Ignore Error breaks button
- RTL: Fix text around visible_characters boundary being added twice to the buffer
- Fix PopupMenu accel position
- Fix OptionButton not removing icon when using clear
- Update TextEdit to use center alignment for inline objects
- Enable input when ColorPicker popup exits tree
- Popup: Reset state on visibility change
- Validate theme type name input in Add Theme Type dialog
- Do not set flags when PopupMenu::set_visible is called to hide popup
- Fix ColorPicker after adding intensity sliders
- TextEdit: Fix text edit font update order

I18n:
- Add translation preview in editor
- Enable changing editor language without restart
- Don't send TRANSLATION_CHANGED outside tree
- Split repeated translation in Game plugin
- Split repeated translation for floating windows
- Fix some i18n issues in visual shader editor
- ScriptEditor: Disable auto translation of the filename label
- Fix Android build template message translation
- Tweak a few miscellaneous localization strings
- Improve auto-translation for static strings in docks
- Fix editor layout direction change on translation change
- Inspector localization improvements
- Fix updating editor icons on translation change
- Improve Project Manager auto-translation
- Improve EditorAbout dialog auto-translation
- Improve AssetLib auto-translation
- Improve SceneTree auto-translation. Fix TreeItem tooltips and the Filter
- Fix double translations in Project Manager
- Improve auto-translation of settings dialogs
- Fix i18n for array property custom add button text
- Don't update scene tree when calling Translation::set_locale()
- Fix category names in help search dialog not translated
- Improve auto-translation of main screens
- Improve auto-translation of Script Editor
- Improve auto-translation of editor's top & bottom bars
- Mark GDScript and shader warnings for translation
- Add Japanese translation for Linux .desktop file
- Add Polish translation for Linux .desktop file
- Fix root auto-translate mode ignored for child nodes when generating POT
- Disable auto translation of flag names in the inspector

Import:
- Fix Texture3D import not working
- Implement KHR_node_visibility in the GLTF module
- Fix resetting imported scene parameters to default
- Add Channel Remap settings to ResourceImporterTexture
- Support multi dot extensions in import plugins
- Use UIDs in addition to paths for extracted meshes, materials and animations
- GLTF: Only pad zeros when exporting numbered images
- GLTF: Don't write unused "targetNames" on meshes
- DDS: Prevent crashing when unable to load image
- Rework scene preview thumbnails (reverted)
- ufbx: Update to 0.17.1
- Betsy: Remove OGRE aliases
- Increase size of Offset field in audio import dialog
- Disable ResourceFormatLoader/Savers of disabled classes
- bcdec: Fix decompressing mipmaps of non-power of 2 textures
- GLTF: Use scene root nodes for root nodes, don't include orphan nodes
- Fix headless import always emits errors
- Allow attaching scripts to nodes in the Advanced Import Settings dialog
- Delete rendering device on the same thread it was created
- etcpak: Improve and fix decompression of mipmaps
- Fix Image format RGB565 conversion and rendering
- Improve error message when trying to load scene as an animation library
- Make build profile project detection also set build options
- BasisUniversal: Ensure ASTC's HDR variant is supported when transcoding
- GLTF: Fix wrong color space for GLTFLight on export
- basis_universal: Update to 1.60
- ResourceLoader: Do not wait for the main thread during initial reimport
- Add named placeholder to blender import options
- GLTF: Don't collapse non-joint leaf nodes when importing skeletons
- Update BoneAttachment3D transform when setting the bone index
- Force multiple of 4 sizes for Betsy compressor
- Update Mipmaps > Limit import option visibility when intended in the texture importer
- Use libjpeg-turbo for improved jpg compatibility and speed
- Fix crash when reimporting nested gltf scenes
- Update astcenc to the upstream 5.3.0 release
- Force multiple of 4 sizes for CVTT compressor
- Load decompressable texture format if no supported one is found
- Don't show toasts for textures detected as used in 3D/normal/roughness
- GLTF: Fix export_post_convert not running for multi-root scenes
- GLTF: Fix importing files with invalid buffer view byte strides
- GLTF export: Allow using a PNG or JPEG fallback image
- PortableCompressedTexture: Fix BasisU crash and wrong format
- PortableCompressedTexture: Support ASTC format and creating directly from compressed image
- Allow completely opting out of name suffix magic in 3D scene import
- BasisU: Use KTX2 format and add import options to configure encoder
- Fix incorrect mipmap size calculation for uncompressed DDS textures
- Fix importing compressed dds textures with non-power-of-two width or height
- Remove old oversampling property from font importers
- Fix is_pixel_opaque bound checks
- Add SVGTexture importer
- Explicitly handle Image AlphaMode enum instead of treating as bool
- Fix fbx runtime import not generating meshes properly
- DDS: Load BGRA4 textures directly as RGBA4
- Fix loading BPTC/ASTC textures on devices that don't support them
- BasisU: Configure HDR quality from the settings
- GLTF: Support 64-bit sizes in glTF import and export
- Fix libjpeg-turbo not working on 32-bit builds
- Check if import script is subtype of EditorScenePostImport
- Expand the imported texture channel count for remapping if necessary
- Use vertex colors (if present) as attributes during simplification
- Image: Fix detecting color channels
- GLTF: Make skeleton bone names unique per-skeleton instead of scene-wide
- Adjust LOD selection metrics to use attribute error
- Add DDS loading of 32bit aligned data without alpha
- Relax the requirements for making EditorImportPlugin
- GLTF: Don't export AnimationPlayer nodes as glTF nodes
- Implement UID references in VariantParser
- Make svg files respect interface/theme/icon_saturation setting when imported for editor use
- [Image font import] Allow comma separated lists as a character range
- GLTF: Align accessor buffer byteOffset to multiple of component size
- GLTF: Don't save unnecessary zero "byteOffset" on export
- Restore 3.x style material auto-extraction import option
- Implement naming version system for FBX and Blend importers like glTF
- Fix deadlock in EditorFileSystem::reimport_files
- DDS: Fix loading cubemaps
- meshoptimizer: Update to 0.24
- GLTF: Fix nasty bug with incorrect buffer indices on export
- Fix incorrect light values on blend import
- Fix all asset reimport on missing filesystem_cache10
- Fix allow any descendant to be used as a Root Type in Scene Import
- Fix Editor crash during first scan in headless import mode
- GLTF: Fix minor niche edge case issues with accessors
- Prevent generating Editor 3D scene preview in headless mode
- Fix Image nearest and cubic resizing bias
- Dedupe images during GLTF Export
- GLTF: Fix crash reading texture sampler for non-existent texture
- ImporterMesh: Validate triangle indices array size is a multiple of 3
- Fix infinite loop in GLTFDocument::_convert_animation_node_track

Input:
- Allow all tool modes to select
- Add configuration option to disable Scroll Deadzone on Android
- Android: Enable support for volume button events
- Fix Android mouse capture issues
- Fix macOS mouse tracking in tooltip popups
- Fix "Unicode parsing error" spam when opening editor
- [macOS/iOS] Ensure only one axis change event is produced during single process_joypads() call
- Fix EditorProperty shortcuts being global and unintentionally triggering
- Support more controllers on macOS 11+
- macOS: Release keys and regenerate mouse events after native popup menu tracking
- Fix Apple's incorrect mapping of Joy-Con (L) and Joy-Con (R) face buttons
- macOS: Use productCategory instead of vendorName for joypad name
- Adjust 2D select/move/rotate/scale shortcuts to match 3D
- Android: Fix decimal keyboard
- Fix FOCUS_ACCESSIBILITY grabbing focus when it is not supposed to, forward GraphNode key input to GraphEdit
- Web: Avoid unnecessary gamepad polling when no gamepads are connected
- macOS: Update entered state from mouseMoved
- macOS: Embedded window support
- iOS: Prevent startup crash with Input singleton null check
- Fix issues with Android controller input handling
- Fix added missing shortcuts from tree to file list
- Fix Xbox Controller on Android
- Optimize InputMap::get_actions
- Add support for SDL3 joystick input driver for Windows, Linux and macOS
- macOS: Process first click event without requiring focus
- macOS: Send initial modifier keys as input events
- Wayland: Fix stuck pointer buttons on window leave
- Keep virtual keyboard visible when keep_editing_on_text_submit is enabled
- Web: Add support for pen pressure
- Allow numpad comma , to be used for 3D Blender-Style Transforms
- Fix action name for ui_colorpicker_delete_preset in built-in InputMap
- Web: Disregard touch events in pointer callbacks (reverted)
- Fix screen_accum not being reset when it should be in Input::VelocityTrack
- Web: Poll controllers only if at least one is detected
- Fix Input.get_joy_info() regression after the SDL input driver PR
- Android: Fix the EOF detection logic
- Add environment variable access defines to SDL linux build config
- Use inotify to detect devices for better reliability on Linux
- Fix the usage of udev and dbus with SDL joystick input driver
- macOS: Fix mouse enter/exit event and custom cursor shape in embedded game mode
- Fix menu keyboard and controller navigation
- Forward mouse events to embedded no-focus windows
- Windows: Release mouse buttons after native window drag/resize operation
- Fix shortcut reset for spatial_editor/tool_select
- Add methods to check which event first triggered "just pressed/released" state
- Handle SDL joypad events for connected controllers on game startup (on Windows and Linux)
- Fix DirectInput controllers on game startup
- Revert "[Web] Disregard touch events in pointer callbacks"
- fix: macOS cmd + drag snapping not working for 3D editor Move, Rotate and Scale tool

Multiplayer:
- Add MultiplayerSpawner unit tests
- Fix node cache errors on nested MultiplayerSpawners
- Expose get_rpc_config and get_node_rpc_config

Navigation:
- Make get_id_path return empty when first point is disabled
- Increase NavigationLink3D gizmo detail to match other circle/sphere 3D gizmos
- Create a dedicated 2D navigation server
- Rename classes in preparation for future restructure
- Add path query region filters
- Add navigation path query parameter limits
- Make NavigationLink3D properly update on visibility change
- Fix navmesh border_size precision warnings
- Fix visible avoidance debug rendering in NavigationRegion2D
- Move navmesh connection owner check to subfunction
- Add bake state info and MultiNodeEdit support for NavigationRegion3D
- Emit changed signal after baking navigation mesh
- Allow to compile templates without navigation features
- Add function to get navigation region iteration id from NavigationServer
- Fix typo in performance
- Prepare NavigationServer for process() and physics_process() split
- Change navigation module LocalVector size_t uses to uint32_t
- Replace the deprecated Geometry2D::get_closest_point_to_segment
- Move NavigationServer navmesh sync from main() to process()
- Make navigation maps emit map_changed directly
- Clean and group NavigationServer headers
- Replace NavigationServer2D Point struct with Vector2
- Replace NavigationServer3D Point struct with Vector3
- Remove no longer needed link polygons from NavMapBuilder
- Move NavigationObstacle3DEditorPlugin to navigation_3d module
- Rename NavigationMeshEditor to NavigationRegion3DEditor
- Move NavigationRegion3DGizmoPlugin to navigation_3d module
- Move NavigationLink3DGizmoPlugin to navigation_3d module
- Remove AStar2D/3D comments on reserve_space() capacity needs
- Capitalize global navigation constants
- Add function to get navigation link iteration id from NavigationServer
- Move 2d navigation related editor plugins to navigation_2d module
- Rename nav_2d namespace to Nav2D to match Nav3D
- Change 3D navigation region and link updates to an async process
- Match avoidance defaults for NavigationAgent and NavigationServer NavAgent
- Change NavigationServer2D avoidance callbacks from Vector3 to Vector2
- Fix CapsuleShape2D outline for navmesh baking
- Change 2D navigation region and link updates to an async process
- Only repath a NavigationAgent with a target position
- Remove get_used_cells to avoid unecessary allocations in navigation baking
- NavigationServer2D: Bind missing merge_rasterizer_cell_scale setting and functions
- NavMap3D: check if obstacles have avoidance enabled
- NavMap2D: check if obstacles have avoidance enabled
- Add a way to filter neighbor points to AStar2D/3D
- Fix flipped clipper2 ifdef
- Fix path post-processing edgecentered

Network:
- JSONRPC: Require manual method registration
- JSONRPC: Fix notification return behavior
- Web: Avoid extra copy when encoding string in WebSocket _onmessage
- mbedTLS: Fix concurrency issues with TLS
- Fix EditorSettings usage in TLSContext
- mbedTLS: Update to version 3.6.4, fixes GCC 15 compatibility

Particles:
- Fix particle jitter when scene tree is paused
- Fix CPUParticles2D repeatedly scaling particles with 0 velocity and Align Y
- Add emission shape gizmos to Particles2D
- Overhaul the cull mask internals for Lights, Decals, and Particle Colliders
- Fix GPU particles not emitting at some configured rates when scale curve is zero
- Fix wrongly assigned emission_normal_texture
- Fix heap-use-after-free when closing a scene with 2D particle nodes selected
- Fix floating point precision errors when setting particle trail length
- Fix particles resetting properties when emitting is toggled
- Move 2D and 3D particle editors to the 2D and 3D folders

Physics:
- Add mid height property to CapsuleShape2D/3D
- Add ability to apply forces and impulses to SoftBody3D
- Place a hard limit on the max_contacts_reported property in 2D/3D physics
- Refactor Jolt-related project settings to only be loaded as needed
- Improve capsule gizmo performance
- Fix get_rpm() on wheel which has steering
- Chunk tilemap physics
- Improve Jolt module initialization style
- Fix interpolation in XR
- Allow to compile templates without physics servers
- Fix broken negative scaling when using Jolt Physics
- Fix ConcavePolygonShape3D always enabling backface_collision when using Jolt Physics
- Jolt: Update to 5.3.0
- Fix shape always being zero with get_rest_info when using Jolt Physics
- Jolt: 32-bit MinGW g++ doesn't call the correct overload for the new operator when a type is 16 bytes aligned
- Remove Jolt Physics project setting "Areas Detect Static Bodies"
- Remove no-op locking in Jolt Physics module
- FTI - Reduce VisualInstance3D xform notifications (reverted)
- Remove emitting of error in JoltBody3D::_exit_all_areas
- SoftBody3D: Add a property for scaling rest lengths of edge constraints
- Fix SCU build issues related to Jolt Physics
- Jolt physics: Setting position instead of velocity in JoltSoftBody3D::set_vertex_position
- Improve performance with non-monitoring areas when using Jolt Physics
- Remove force enter/exit logic from JoltArea3D
- Remove error for degenerate soft body faces when using Jolt Physics
- Change JoltShapeInstance3D to use move semantics
- SoftBody3D: Support physics interpolation (reverted)
- Fix Area3D signal emissions when using Jolt Physics
- Batch the adding of Jolt Physics bodies
- Fix Jolt Physics soft body vertex normal calculation
- Fix crash when disabling SoftBody3D while using Jolt Physics
- Jolt physics: wake up a soft body when its transform changes
- Improve performance for shapeless objects when using Jolt Physics
- Fix crash in Jolt Physics when switching scenes in editor
- Document some deadlocks in the physics server code
- Fix performance regression when rendering collision shapes
- Fix contacts not being reported properly when using Jolt Physics
- Revert "SoftBody3D: Support physics Interpolation"
- Increase SoftBody3D damping coefficient editor range
- Pause physics command queue during physics processing
- Fix move_and_slide forcing synchronization with physics thread
- Fix one-way-collision polygons being merged despite being on different Y-origins in TileMapLayer
- Fix crash when rendering a soft body 3d

Plugin:
- EditorInterface: Add get_open_scene_roots to retrieve all opened scenes root nodes
- Clarify API for top selected nodes in EditorSelection and make public
- JavaClassWrapper: Improve handling of typed array arguments
- JavaClassWrapper: Fix converting returned arrays to Godot types
- JavaClassWrapper: Fix conversion to/from org.godotengine.godot.Dictionary that regressed
- JavaClassWrapper: Fix mistake in last fix for org.godotengine.godot.Dictionary conversion
- Add maven publishing configuration for Godot tools
- Fix wrong context menu argument from FileSystem's item list
- Update the documentation for JavaClassWrapper and AndroidRuntimePlugin
- Always use base directory in CONTEXT_SLOT_FILESYSTEM_CREATE
- Android: Fix Android plugins regression
- Add a debug version for Godot's maven central artifact

Porting:
- Implement screen reader support using AccessKit library
- macOS: Add support for loading shell environment from UI apps
- FileAccess: Implement get_size and get_access_time methods
- Windows: Fix issue where newly created window incorrectly acquired the popup property
- Use windowBackgroundColor instead of controlColor for macOS system base color
- Simplify the printed file paths in the Linux/*BSD crash handler
- Add methods to decode/encode multibyte encodings
- Wayland: Handle fifo_v1 and clean up suspension logic
- Wayland: Implement native sub-windows
- Add support for using an Android Service to host the Godot engine
- Android: Skip non-existing system font files
- Android: Fix editor crash after changing device language
- X11: Fix check for is_maximized to require both horizontal and vertical
- [Linux/BSD] Offload RenderingDevice creation test to subprocess
- Improve error message from JavaClassWrapper.wrap()
- Windows: Fix get_modified_time on locked files
- Swap Nintendo face buttons on macOS
- Use more efficient sleep approach on Windows when low-processor mode is enabled
- Set unsupported to true on error in FreeDesktopScreenSaver
- X11: Fix native dialog parent selection condition
- macOS: Enable transparency for windows with decorations
- [macOS/iOS] Fix system font family descriptor leak
- macOS: Fix editor loading crash on native menu click
- DisplayServer: Implement get_accent_color on Linux
- macOS: Update mouse-entered state when subwindow closes
- macOS: Replace custom main loop with [NSApp run] and CFRunLoop observer
- Implement DirAccess.is_equivalent method
- macOS: Fix cleanup with some command line tools
- macOS: Fix running with DisplayServerHeadless
- Windows: Fix borderless maximized window mode
- macOS: Fix missing frame_changed signal to CameraFeed
- Android Editor: Auto create nomedia file to hide project files in media apps
- Handle the case where waitpid returns errno EINTR
- Wayland: Fix error spam for closed windows
- Apple: Add pthread implementation of Thread class
- Change DisplayServerMacOS from GDCLASS to GDSOFTCLASS. Add GDSOFTCLASS to other display servers
- Accessibility: Use system timer/wait functions for frame delay when screen reader is active
- Fix crash in release build with llvm-mingw
- Web: Prevent unnecessary canvas resizes by flooring scaled dimensions
- macOS: Fix close button hidden and title bar transparent in fullscreen mode
- macOS: Fix touch bar observer crash
- Fix Windows OS.get_unique_id() null termination issue
- Wayland: Ensure pointed window's existence in mouse_get_position
- Improve script backtrace print in crash handlers
- Do not call accessibility_set_window_rect on Wayland, fix main windows accessibility context creation
- Wayland: Implement the cursor-shape-v1 protocol
- Wayland: Fix error spam when closing popup
- X11: Fix GL init memory leak when transparency is enabled
- macOS: Fix embedded window position when host control is moved, but not resized
- macOS: Fix transparent window state detection for embedded process
- macOS: Fix a crash if no input event is set for a specific window
- Implement get_filesystem_type on macOS and Linux
- Wine: Use _SH_DENY* flags instead of unsupported _SH_SECURE
- Web: Always return 0 for OS::get_process_id()
- macOS: Ensure LayerHost size is set when first embedded
- Wayland: Fix window fitting in single-window mode
- Fix GodotApplicationDelegate init
- Fix execute_with_pipe / create_process exit code
- Fix transparency background issue on Android
- Wayland: Add missing return in selection logic
- Add support for OS.get_version_alias() on Android
- macOS: Fix clipboard and TTS not working in embedded game mode
- Fix native file dialog crash with invalid filter
- Android: Fix save issue when using native file dialog
- Remove TTS debug print
- Fix Input.vibrate_handheld on Android
- macOS: Initialize CVDisplayLinkRef member field
- Address remaining feedback on Android background transparency
- macOS: Add --path argument when instance is created by project started from editor
- Wayland: Fix division by zero when scale is less than 1
- Cleanup closed embedded processes on macOS
- macOS: Move keyboard layout related code to base display server
- Add missing JNI variant conversion for generic Array
- X11: Fix memory leak when using window embedding
- Android: Fix DisplayServer.get_display_safe_area() issues
- Fix immersive mode and virtual keyboard height issue on Android
- Fix Android splash theme regression
- Windows: Add SSE4.2 support runtime check
- Add keypad codes to the keysym unicode map
- Linux: Fix narrowing conversion error in 32-bit builds
- macOS: Do not use NSApplication main loop for headless mode
- Android: Run clipboard tasks on UI thread
- macOS: Fix warp_mouse in game mode
- Web: Fix inappropriate memfree() use
- Fix: Make get_space_left on Windows use current_dir instead of process CWD
- Web: Fix the editor {godot,emscripten}PoolSize config values
- macOS: Add Tahoe 26.0 to version alias
- MacOS: Fix embedded screen_get_scale API
- Fix Android TTS on-demand init
- Windows: Additionally use cpuid instruction to detect SSE4.2 support
- Unix: Replace symlink target, not the link itself when using backup save mode
- Unix: Fix execute_with_pipe closing wrong pipe handle
- Defer format_changed and frame_changed signal for all camera feeds
- macOS: Process joypad input directly in the embedded process
- macOS: Fix embedded menu/spacer relative position
- Windows: Fix color picker on old versions of Windows 10
- macOS: Forward application focus events to the embedded process
- Use org.a11y.Status/ScreenReaderEnabled on Linux
- SCons: Use gnu++20 in metal driver
- [Linux/BSD] Initialize DBus only once
- Windows: Save and restore window rect when switching to/from maximized+borderless mode

Rendering:
- Use lower shadow normal bias for distant directional shadow splits (reverted)
- Add stencil support to spatial materials
- Implement LIMIT_MAX_COMPUTE_SHARED_MEMORY_SIZE to limit_get in the Vulkan backend
- Implement FXAA 3.11 to replace the current broken implementation
- Add support for bent normal maps for specular occlusion and indirect lighting
- Add new StandardMaterial properties to allow users to control FPS-style objects (hands, weapons, tools close to the camera)
- Add color_conversion_disabled shader hint
- Optimize shared texture creations
- Implement Fragment density map support
- OpenXR: Use the XR_FB_foveation_vulkan extension to get the density map for VRS
- Implement motion vectors in mobile renderer
- Expose RenderingServer::environment_set_fog_depth
- Fix Camera3D gizmo representation to accurately reflect FOV
- WebGL: Support native ASTC compression when available
- Fix wrong default texture for global uniforms of type sampler2DArray
- Pass angular diameter into light size constants for sky shaders
- Optimize ProceduralSkyMaterial by removing uses of acos and simplifying logic
- Rendering compositor identifies is_opengl API; minor optimisation
- Add SMAA 1x to screenspace AA options
- Add ASTC HDR format variants
- GLES3: Fix errors baking light map with compatibility renderer
- Fix voxelizer normals
- Fix render info primitive count per TRIANGLE_STRIP
- Fix 2D quad primitive missing lighting data in GLES3 renderer
- Fix uninitialized value in Tonemap
- Add Meshes to the Video RAM Profiler
- Disable texture array reflections on Intel GPUs on macOS due to driver bugs
- Suppress OpenGL debug marker printing
- RenderingDevice: Validate pre-raster (vertex) shader in render_pipeline_create
- Physics Interpolation - Add editor configuration warnings
- Use separate WorkThreadPool for shader compiler
- Validate triviality of InstanceData struct in Mobile and Forward+ renderers
- Fix inefficient upload in Mobile Shadows
- Optimize _fill_instance_data function in Forward+ renderer
- Metal: Use uniform set index passed by RenderingDevice
- Metal: Add missing stage info to shader description
- Fix inefficient upload in Mobile Shadows
- Metal: Use p_set_index when binding uniforms, to use correct data
- Fix incorrect parameters passed to VMA
- MetalFX: Change fallback behavior
- Significantly reduce per-frame memory allocations from the heap in the Mobile renderer
- Switch occlusion culling to be based on depth instead of Euclidean distance
- RenderingDevice: Delay expensive operations to get_perf_report
- Fix GLES3 gaussian_blur mipmap setup
- Fix deadlock between PipelineHashMapRD::local_mutex and GDScriptCache::mutex
- Clean up more dynamic allocations in the RD renderers with a focus on 2D
- Forward+: Replace the current BRDF approximation with a DFG LUT and add multiscattering energy compensation
- Renderer: Expose and document Features enum for MetalFX
- CPUParticles2D: Fix physics interpolation after entering tree with emitting = false
- Fix Invalid Task ID error spam in PipelineHashMapRD
- Metal: Use reference, so we're not copying every frame
- Vulkan: Disable layers in editor deemed buggy by RenderDoc
- Error when draw list is not active in draw_list_switch_to_next_pass
- Physics Interpolation - Move 3D FTI to SceneTree
- Add error check for reflection probe invalid atlas index
- Fix Movie Writer behavior with Viewport Display Mode + Window Size Override
- Renderer: Fix Metal handling of cube textures; assert equal dimensions
- Renderer: Warn when images need to be converted due to their formats being unsupported by hardware
- Disable broken Vulkan layers before running RenderingDevice tests
- Vulkan: Re-enable Mesa device select layer
- Fix uninitialized member vars in CommandQueueMT and RasterizerSceneGLES3
- Fix corrupted negative values for signed BC6
- Avoid using a global variable to store instance index in canvas items shader in RD renderer
- Combine TileMapLayer debug quadrant shapes to a surface
- Renderer: Reduce scope of mutex locks to prevent common deadlocks
- Detect more pipeline settings at load time to avoid pipeline stutters
- Relax the range hint for canvas layer properties
- Pre-allocate more resources when screen textures are detected in the Mobile renderer
- Fix Math constant conversion
- Fix RendererRD crash on start on Intel Macs
- Allow moving meshes without motion vectors
- Properly report missing nodes in LightmapGI
- Fix UBSAN alignment issues in the render graph
- Scene shader: Improve and document SH diffuse evaluation for light probes
- RenderingDevice: Pass mipmap count to texture_create_from_extension()
- Fix float/int comparison in acos_approx in sky template shader
- Avoid unnecessary version_get_uniform() calls
- Fix reflection probe dark borders
- Fix error spam to due wrong use of reserve() in D3D12 driver
- FTI - Add custom interpolation for wheels
- FTI - Fix SceneTreeFTI behaviour on exit tree
- Avoid crash when allocating specular and normal-roughness buffers when render buffers aren't available
- Check for GL ES version of BPTC extension when using the OpenGL renderer
- Add specular occlusion from ambient light
- Compatibility: Disable environment ambient light when affected by light probes
- SceneTreeFTI: faster access to Node children
- Fix reflection probe box projection stretching
- FTI - Optimize SceneTree traversal
- Use a fragment shader copy instead of a blit copy in the final blit to screen in the Compatibility backend
- Change Occlusion Culling Buffer debug view to use log scaling
- Implement the count parameter in RenderingServer.canvas_item_add_triangle_array
- Rewrite textureProjLod usage to avoid a Vulkan validation error
- Improve platform compatibility of Windows and Direct3D 12
- Rework semaphores for presentation to be created per swap chain image to fix validation error
- Fix Reflection Mask not working on Mobile
- Reduce amount of permutations in mobile shader
- Shader: Fix the default behavior when mat uniforms are null
- macOS: Support vsync when embedding OpenGL processes
- Mobile: Disable subpass post-processing when using FXAA
- Metal: Ensure stencil-only rendering is supported
- Fix light range in VoxelGI
- Metal: Fix crash when clearing render buffers
- Metal: Disable MetalFX Temporal for mobile rendering method
- Renderer: Eliminate String allocations for all labels in the renderer
- Ignore destination alpha when blitting to window in compatibility renderer
- Mobile: Move _setup_lightmaps before _fill_render_list
- D3D12: Fix inconsistent value for DCOMP_ENABLED in platform code
- Fix missing ibl reconstruction from DFG multiscattering
- Minor rendering and XR changes to allow Meta enivornment depth API to work entirely from GDExtension
- Vulkan Mobile: Fix lightmap instances count
- Correctly place viewport and use viewport relative rect for the final blit in Compatibility renderer
- Metal: Fix multi-view support
- Allow double precision modelview
- Avoid -Wmissing-declarations warning in RenderingShaderContainer
- SceneTreeFTI: - Fix identity_xform flag getting out of sync
- Increase directional light energy in sky for fog sun scatter
- Expose RS.mesh_surface_update_index_region
- Optimize Mobile renderer by using FP16 explicitly
- LightmapGI: Search for shadowmask light index only after sorting the lights
- Fix SH lightmap coefficients for direct lights
- Avoid crash when texture layers is greater than 1 and format is not an ARRAY type
- SceneTreeFTI: - Fix force_update flag getting out of sync with invisible nodes
- Make LightmapGIData::_set_user_data a proper setter instead of an additive operation
- Fix crash when using VIEW_INDEX in shader with Vulkan mobile renderer
- RendererRD: Fix swizzle on depth formats
- OpenGL: Fix shader compilation failure with shadow_to_opacity and unshaded
- Fix LightmapGI shadow leaks
- Fix crash on custom shaders using VIEW_INDEX on Vulkan Clustered Forward Renderer
- macOS: Switch Angle to Metal backend
- Fix final blit in OpenGL when stereo rendering is used
- Vulkan Mobile: Fix crash from shader compilation with USE_RADIANCE_CUBEMAP_ARRAY
- Upgrade normal interpolators to FP32 to fix Adreno
- Change all interpolators to FP32 in mobile renderer
- Fix the VRS attachment being incorrectly added to color_attachments
- Fix bent normal maps not working with triplanar UVs
- Use raw buffer pointers in RenderingDevice allocation APIs to avoid intermediary arrays
- Check render target validity before getting motion vector texture in mobile renderer
- Forward+: Fix builtins in light shader
- SCons: Enable lightmapper and xatlas_unwrap modules on Android and iOS editors
- Revert "Use lower shadow normal bias for distant directional shadow splits"
- Fix GLES3 stereo output (sRGB + lens distortion)
- Fix baked VoxelGI using the wrong color space
- Always perform color correction and debanding on nonlinear sRGB values
- macOS: Selectively bake specific shader variants for MoltenVK
- Fix stencil preset priorities
- Fix stencil preset next_pass stencil flags
- Fix buffer size calculations in lightmapper_rd.cpp to account for element sizes
- Revert "FTI - Reduce VisualInstance3D xform notifications"
- Ensure sky orientation is set when reflection uses sky
- Fix a few improper memory accesses in the clustered forward vertex shader
- Vulkan Mobile: Fix writing vertex color in spatial shader
- Always send lights to sky shader if using sun scatter
- Fix RenderingServer::mesh_surface_get_lods()
- Fix VVL errors by changing frag_color to FP32 and dFdx/y
- Metal: Use image atomic operations on supported Apple hardware
- Fix opaque stencil rendering
- FTI: - Fix MultiMesh init and stable behaviour
- FTI: - Add reset on setting top_level
- Metal: Use correct environment variable to generate labels
- FTI: - Clear SceneTreeFTI completely on enabling / disabling
- Web: Restrict rendering method selection
- Fix surface_get_arrays returns wrong index array when using empty vertex array
- Fix underculling of occulusion culling
- Fix division by zero in clearcoat specular BRDF
- Fix crash when creating voxel GI data
- Metal: Remove invalid assumption for image atomic operations
- macOS: Selectively bake "no image atomics" shader variants
- Fix crash when editing some resources and reloading scene
- Add some multimesh null checks to avoid crash
- RenderingDevice: Add uniform_type check to avoid crash
- Never overwrite motion vectors in the transparent pass
- Fix lightmap dynamic objects with physical lights
- Fix debanding for Mobile rendering method with HDR 2D
- D3D12: Fix shader model check, initialization error handling
- Check for Vulkan Memory Model support and make it a variant
- Compute texture alignment for transfers using the LCM instead
- Don't use GL_DEPTH_STENCIL_ATTACHMENT on depth buffer from WebXR
- Remove Adreno 3xx flip workaround
- Fix overflowing render priority for stencil mode outline and xray
- OpenGL: Fix crash at startup with "Thread Model" set to "Separate"
- Windows: Add Intel Gen9.5 (Kaby Lake) GPUs to Angle blocklist
- Metal: Ensure correct output texture format selection
- Fix mobile renderer motion vectors
- Fix material removal clearing all instances of shared texture arrays
- Fix MSDF outline size clamping
- Treat missing variants as normal cache misses during shader cache lookup
- Metal: Read gl_ViewIndex in tonemapper.glsl for multi-view subpasses
- Add debanding to SMAA and apply debanding before spatial upscalers
- Check renderer type when setting 3D upscaling mode
- Use vertex shader workaround for Mali GXX GPUs for glow shader
- Handle the case where VRS is a two byte per pixel format when creating default VRS texture
- Fix --generate-spirv-debug-info regression (alternate take)
- Metal: Reduce baked version to MSL 3.1; validate minimum version
- MSDF: Fix outline bleed out at small sizes
- Avoid attempting to load from shader cache when both the user-dir and res-dir are invalid
- Add GENERAL resource usage to the render graph and fix mutable texture initialization in D3D12
- Metal: Ensure baked Metal binaries can be loaded on the minimum target OS

Shaders:
- Expose built-in region information
- Re-organize UI in the shader editor
- Replace VMap used in VisualShader with HashMap and remove VMap
- Allow constants and expressions in hint_range
- Allow default case at the top of a switch scope in shaders
- Fix 2D instance params crashing using outside of main()
- Fix "unused varying" incorrect warning in shaders
- 2D: Fix light shader accessing TEXTURE_PIXEL_SIZE
- Fix missing alpha input for visual shaders
- Limit error messages in CodeTextEditor to 2 lines length
- Shader: Fix bvec to variant conversion
- Unify Scripts Panel naming for the script and shader editors
- Make shader editor menu position consistent with script editor
- Web: Optimize GL.getSource for known-length shader sources
- Remove duplicated entries from shader built-ins
- Fix shader compiler crash when parsing case labels with non-existent vars
- Vulkan Mobile: Fix reading builtins in light() of spatial shader
- Fix global shader texture uniform
- Prevent ternary expression with a sampler types in shaders
- Add missing input transform to visual shader preview
- Fix shader function overloads with incorrect order
- Fix shader editor auto-opens on startup
- Visual Shader State Persistence - Type Fixes
- Sort bent normal output at the bottom to prevent visual shader breakage
- Fix shader editor menu switch on hover for file button
- Improve shader overloaded function error reporting
- Make shader editor menu position consistent between shader languages

Tests:
- Add getter tests for dynamic fonts
- Add check for argument name validity
- Core: Add constexpr constructors/operators to math structs
- Fix SCRIPT ERROR/ERROR/WARNING on test output
- Remove build_array() and build_dictionary() from tests
- Add THREADS_ENABLED check before RID thread tests
- Test for insertion at array's size
- Delete test cache before running it
- Fix tests that fail when alone
- Fix --test help option not showing in template builds
- Add unit tests for Sprite2D
- Don't hard-code test path when deleting test data
- Fix infinite recursion on GDScriptTests if a script cannot be reloaded
- Fix Resource Duplication test errors
- Fix tests warning line break strictness project setting
- Fix unfiltered error output in tests

Thirdparty:
- embree: Update to 4.4.0
- libwebp: Update to 1.5.0
- clipper2: Update to 1.5.2
- Theora: Fix YUV422/444 to RGB conversion
- tinyexr: Update to 1.0.12
- Update to latest version of Swappy
- Update HarfBuzz to 10.4.0
- Update FreeType to 2.13.3
- ICU4C: Update to version 77.1
- libpng: Update to 1.6.47
- thorvg: Update to 0.15.11
- pcre2: Update to 10.45
- mbedTLS: Update to version 3.6.3
- thorvg: Update to 0.15.12
- ufbx: Update to 0.18.0
- Update HarfBuzz to 11.2.1
- basis_universal: Rediff patches, remove Windows encoding fix
- manifold: Update to 3.1.1
- Correct libjpeg-turbo patches
- Update qoa.h to latest git
- certs: Sync with upstream as of Apr 8 2025
- Update OpenXR to 1.1.47
- AccessKit: Update API to 0.16.0
- Update meshoptimizer to v0.23
- ufbx: Update to 0.18.2
- Fix unzSeekCurrentFile not resetting total_out_64
- thorvg: Update to 0.15.13
- clipper2: Update to 1.5.3
- libpng: Update to 1.6.48 (+ cleanup thirdparty docs)
- doctest: Update to 2.4.12
- openxr: Update to 1.1.48
- msdfgen: Update to 1.12.1
- miniupnpc: Update to 2.3.3
- libktx: Update to 4.4.0
- libtheora: Update to 1.2.0
- clipper2: Update to 1.5.4
- OpenXR: Update to 1.1.49
- ufbx: Update to 0.20.0
- Sync controller mappings DB with SDL community repo
- Fix SDL threading on macOS/Linux
- Specify Apache license version for Grisu2
- Update manifold to upstream commit 76208dc
- Fix ICU support data loading
- harfbuzz: Update to 11.3.2
- Update access-kit to 0.17.0
- Add two missing SDL patches to the README.md
- TVG: Use heap for XML parser allocs

XR:
- Implement XR_EXT_performance_settings OpenXR extension
- Add support for the OpenXR futures extension
- Implement OpenXR FB swapchain update extensions
- OpenXR: Expose more system info from XrSystemProperties
- OpenXR: Add controller interaction profile for Pico 4 Ultra
- Allow to compile the engine without XR support
- OpenXR: Support alternative reference spaces from extensions
- Fix build errors when building with disable_xr=yes
- Add support for running hybrid apps from the XR editor
- OpenXR: Fix OpenGL version warning when using GLES
- OpenXR: Clean-up OpenXRExtensionWrapper by removing multiple inheritance and deprecating OpenXRExtensionWrapperExtension
- Add support for Direct3D 12 OpenXR backend
- Deactivate the CameraServer by default
- Correct occlusion culling viewport location calculation when projection uses asymmetric FOV
- Editor: Replace TextEdit with EditorSpinSlider for XR Action Set Priority
- Add tooltips to OpenXR Action Map UI
- Enable composition layer fallback in panel mode
- Avoid doctools attempting to query the CameraServer to infer a default value for camera_is_active
- Ensure the composition layer is registered when the layer viewport is updated
- macOS: Allow users to select Continuity Camera
- Automatically activate camera monitoring when using CameraTexture
- Fix OpenXR Action Map GUI not scaling according to Editor Scale
- Add singleton check before adding webxr interface
- OpenXR: Request the XR_KHR_loader_init extension
- OpenXR: Fix saving action map when UID is used in project settings
- OpenXR: Fix building foveation extension without Vulkan
- OpenXR: Fix building with Wayland support and opengl3=no
- Fix camera feed device order on Linux
- Enable game window close button on PicoOS
- Enable XR play mode options in the regular editor
- Add CameraFeed support for Android
- Physics Interpolation - Fix XR Nodes to work with SceneTreeFTI
- OpenXR Futures: Add return value support
- Fix the CAMERA permission request on HorizonOS devices
- Add new joints to XrBodyTracker
- WebXR: Better errors when WebXR Layers or multiview are unavailable
- OpenXR: Add support for render models extension
- OpenXR: Only run xrSyncActions when application has focus
- Rename OpenXRInterface.OpenXrSessionState to OpenXRInterface.SessionState
- Adjust names of new XRBodyTracker joints
- FTI: - Change SceneTree global setting to static
- Add CameraServer feeds_updated signal, and document async behavior
- Add missing OpenXR paths to /user/vive_tracker_htcx
- Fix error spam when hands are not tracked
- Fix camera removal detection after toggling monitoring on Linux
- Misc XR editor updates
- OpenXR: Work around bug with Meta runtime on 1.0.49
- Update the OpenXR Vendors plugin for the XR editor to the latest stable version
- OpenXR: Fix required extension tooltip
- OpenXR: Use GLTFDocument function to get supported extension names
- Fix missing layer provider setup when setting Surface after visibility
- OpenXR: Fix default action map entry for Vive Focus 3