Skip to content

Releases: geode-sdk/geode

Development Release

24 Dec 12:24
a7a6014

Choose a tag to compare

Development Release Pre-release
Pre-release

Geode development release for commit a7a6014. Since this is not a regular release, Geode will not install the resources automatically, so you should use the installer if you want them.

Geode v4.10.0

22 Nov 00:34
f8b42de

Choose a tag to compare

This release adds a few developer utilities, and fixes android builds on the newer NDKs

v4.10.0

  • Add $on_game macro for GameEvent events (679678f)
  • Add progress bar helper class (#1467)
  • Add more hook priority utilities (#1510)
  • Add label size utilities (#1536)
  • Add no result version of dispatch event macros (5a2055f)
  • Add 'Download Mods Here' message (#1512)
  • Add option to show milliseconds in logs (5ec4ba3)
  • Make typeinfo_cast<ModifyClass> error (5cb624c)
  • Allow changing library link type in setup_geode_mod (9fdc5b5)
  • Allow using string_view and const char* as CCDictionaryExt key (c14d02c)
  • Rename async.hpp to coro.hpp, and geode::utils::coro namespace (7a2dc8d, 3b94915)
  • Remove CoTask, add coro::spawner and other utilities (671d321)
  • Fix geode::stl::vector on r29 ndk (#1508)
  • Fix clearing the developer filter on ModList::init (#1509)
  • Fix CCDictionaryExt iterator types (2f7c126)
  • Fix TextInput crashing on destruction (#1507)
  • Fix main thread not being called main in android logs (2658941)

Geode v4.9.0

30 Sep 20:02
42ebdb6

Choose a tag to compare

This release adds the assets for Modtober 2025, alongside other cool features and fixes.

v4.9.0

  • Add Modtober 2025 content (#1501)
  • Add geode::cocos::getObjectName for getting demangled type names (c734b29)
  • Add mod load priority, load mods in alphabetical order (#1492, #1500)
  • Implement CCImage::saveToFile for macOS and iOS (#1496)
  • Allow using SDK without GEODE_MOD_ID macro (useful for static libs) (a6f215f)
  • Use OS APIs for file operations for improved performance and clearer error messages (ec46ad3)
  • Fix crashlog window title and icons on Windows (d527c08, efdde0a)
  • Fix custom settings not reloading dependants (#1488)
  • Fix removeAllChildren UB (dd9446b)
  • Fix Android gd::string causing double frees (#1490)
  • Optimize pathToString conversion (2cd8559)
  • ConstexprString can now be used as a template parameter (cf795fb)
  • Add Self type on Modify to make referring to self type more idiomatic (945f6d5)
  • Fix aligned_storage deprecation warnings when using C++23 (e7eed58)
  • Fix CC_SYNTHESIZE calls and define inline getters/setters for cocos (869dcfa)
  • EventV2 + async fixes (b3e6536)
  • Improve the outdated GD version warning (#1475)
  • Fix VMTHookManager (22ba7dd)

Geode v4.8.0

27 Aug 20:55

Choose a tag to compare

A mostly fix release that focuses on Unicode and paths. Also adds a way to do virtual table patching via the VMTHookManager class.

v4.8.0

  • Fix geode::Notification z ordering (127733e)
  • Add CCNode::getChildrenExt (d198df5)
  • Add CCNode::getChildByIndex (0ba1f2a)
  • Fix GEODE_MOD_STATIC_PATCH not using the geode namespace (#1456)
  • Fix Linux install script flatpak directory (2cf1e57)
  • Document return paths for dirs functions (d821172)
  • Add VMTHookManager for hooking virtual functions that have not been defined by virtual table patching (383f8fd)
  • Fix Unicode logging on Windows (c5e93b9)
  • Remove all std::filesystem::path::string calls as they can crash on Unicode paths (#1473)
  • Replace all A WinApi calls with W calls (#1473)
  • Hook and patch toggling (#1468)
  • Added option to force cURL to use IPv4 (#1412)

Geode v4.7.0

24 Jul 20:03

Choose a tag to compare

This release mostly includes minor additions and bugfixes. But for the nerdy, this adds support for Enterprise Certificates on iOS!

v4.7.0

  • Change from copying queue to moving queue for main thread (9b8fb73)
  • Add reading from unzipped/launch-args.txt on iOS as an option (ae90fc9)
  • Add new "binary-dir" launcher flag for changing the path of mod binaries (0b71c3c)
  • Use ColorProvider for SwelvyBG colors (01ee436)
  • Deprecate the usage of geode::cast::as (9d28ab9)
  • Return success for patching if there is nothing to do (f92e5b6)
  • Updated TulipHook to 3.1.4 (f469696)
    • Fixes struct params and enabling after disabled.

Geode v4.6.3

01 Jul 23:29

Choose a tag to compare

The latest update may have tried fixing the crashlogs on Windows, but it unfortunately was not entirely successful in that. This update is supposed to fully fix the issue.

v4.6.3

  • Fix Windows crashlogs not appearing (for real this time) (dedf1eb)

Geode v4.6.2

27 Jun 18:08

Choose a tag to compare

Another small bugfix for windows and ios!

v4.6.2

  • Fix Windows crashlogs not appearing (02cee65)
  • Unzip JIT-less iOS binaries separately from the .geode file (85fe11f)

Geode v4.6.1

22 Jun 21:30

Choose a tag to compare

Not a big update without rapid bugfixes! A small update that should fix a lot of crashes.

v4.6.1

  • Fix several random crashes caused by incorrect relocation code in Tuliphook
  • Make unzip upon download iOS only (0a6d09c)

Geode v4.6.0

22 Jun 16:21

Choose a tag to compare

Big update incoming! This update mainly adds support for JIT-less iOS and lots of internal TulipHook changes. Huge thanks to @FireMario211 and @altalk23! There might be bugs or crashes, so please let us know if you come across to them!

v4.6.0

  • JIT-less iOS support! (#1395)
    • This means that Geode now supports iOS 26 beta and above
    • Follow instructions in the iOS launcher guide for setting up
    • Old mods compiled for iOS need to be recompiled to work with this version, but other platforms are unaffected
    • There are new additions to help with JIT-less specific hooking and patching
      • Geode's own Modify classes should work out of the box
      • You can check if the platform is JIT-less iOS by using the Loader::isPatchless function
      • For custom hooks, you can use the GEODE_MOD_STATIC_HOOK macro to add a hook. This hook can be enabled and disabled like normal.
      • For custom patches, you can use the GEODE_MOD_STATIC_PATCH macro to add a patch. This patch will be applied by the launcher and can not be disabled.
      • If you have any dynamic patches, you can not use them with JIT-less iOS
    • This is a pretty big update, so there might be some issues with it. Please report the issues you find.
  • Major TulipHook update from 2.5.0 to 3.1.0 (#1395)
    • Adds debug logging behind the launcher flag enable-tulip-hook-logs
    • This update is a mainly internal one, but it is the most sensitive part of Geode
    • If you find any issues with it, please report them
  • Unzip on mod download (#1390)
  • Add Italian translation for the Windows installer (#1393)
  • Add AndroidInputTimestampEvent (#1396)
  • Fix keyUp when command key is pressed on MacOS (#1324)
  • Don't create a popup when there are no mods to update (#1311)
  • Add unzipped binary cleanup of unused platforms (#1377)
  • Add API badge and tag for mod listing (#1389)
  • Create Linux installer script (d38acee)
  • Use FORCE_COLOR environment variable to force terminal colors (79761bf)
  • Patch conditional variable on older Wine versions (53df4d3)
  • Make ObjWrapper::getValue non-const (5c3afbd)
  • Make Windows clipboard utilities unicode (82d8faf)
  • Use custom certificate store for web requests on Windows (e0c1774)
  • Add verbose curl logging (ec34df6)
  • Add writeStringSafe that writes to a temporary file first (af806ba)
  • Force unzip of mods on launch if the binary is missing (e4dd3e8)
  • Fix rare unzip crash (86fd2c4)
  • Fix PCH on iOS (0d972ab)
  • Don't load importance superseded mods (2c5230e)
  • Add some more documentation comments (9b27ddc)
  • Fix LazySprite overloads and performace issues (0f53f38, 5394954)
  • Error when trying to use m_fields in non-CCNode modify classes (0aed958)

Geode v4.5.0

26 May 21:38

Choose a tag to compare

Mostly bugfix release, but has some pretty important fixes and other useful additions!

v4.5.0

  • Multipart form support for Geode web utilities (#1345)
  • Use system certificate store for web requests on Windows, should fix some SSL issues (665a000)
  • Fix windows file dialogs needing alt tab in full screen (f1a2b1b)
  • Improve iOS stack traces in crashlogs, show the memory address that caused the crash (230ad79)
  • Shorten DLL paths in Windows crashlogs, for DLLs that are from GD or mods (f6a5fb3)
  • Add a geode::utils::string::pathToString method, which safely handles UTF-16 conversions on Windows (95eed22, 138d071)
  • Fix base64 utilities not being exported and thus unusable by mods (dcd42df)
  • Fix geode::utils::game::exit and restart not linking on all platforms except Windows (50c09b0)
  • Fix Mod::getLaunchArgumentName not actually existing (#1356)
  • Fix openFolder not working properly on MacOS (b1a8464)
  • Fix LazySprite callback sometimes being called multiple times (d273ce6)
  • Fix LazySprite sometimes invoking undefined behavior (6b5146a)
  • Fix WeakRef leaking memory if a strong reference outlives all weak references (9587ce3)
  • Add a way to cancel LazySprite loading (3a35321)
  • Unify destructor fix across all platforms, replace a global map with a stack, fix Windows leaking references (#1350, b0f38ad)
  • Add some logs to web utilities and improve error messages (c2caafc)
  • Make AxisScaling::grow shrink to initial size if needed (0c80db6, c3b4e3d)
  • Make the name of the mod being uninstalled yellow (9a6346a)
  • Fix static notification queue object causing crashes when closing the game (#1340)
  • Fix compile issues with gd::vector on Android (#1351)
  • Use Clang 19 for windows builds (#1346)
  • Additional CCRenderTexture members (#1352)
  • Make property macros public (#1364)