Skip to content

Releases: geode-sdk/geode

Event system changes

07 Apr 17:43
Compare
Choose a tag to compare
  • Add SpacerNode for layouts (b44b5d3)
  • Add the Dispatch system for using events without linking to optional dependencies (b44b5d3)
  • Add EventFilter::getCallback and make EventListener::getFilter return a reference (ed8d230, 0460fef)
  • Add CCNode::getEventListenerCount (3dd6d55)
  • Add IDs to CustomSongWidget (530551e)
  • Rework event listeners to have them not all be placed in the same queue aswell as fixing issues with dangling pointers (993cd6f, 6ba9148, b9b8c29, 69ddb75, ...)
  • Make SentAsyncWebRequest dllexported, allowing mods to use async web requests (5924901)
  • Fix issues with WeakRef (cf69fa3)
  • Fix being able to recursively click on developer names to open the list of their created mods (fac032f)

Thank you to Fleeym for contributing to this release!

Minor Fixes

03 Apr 08:01
Compare
Choose a tag to compare
  • Fix crash when installing mods (2efe772)
  • FMOD is now linked on MacOS (f662251)
  • GEODE_DEBUG on longer needs to be defined for log::debug to work (ab2abcd)
  • Make Geode changelog visible in-game (75580a0)
  • Make the changelog only be loaded once the changelog button is pressed in ModInfoPopup (75580a0)
  • Fix the scrollbar not working for the changelog in ModInfoPopup (75580a0)
  • Fix visual issues with scrollbars (75580a0)

Many Changes & Improvements

02 Apr 16:49
Compare
Choose a tag to compare

v1.0.0 is just around the corner, they said. This will be the last beta release, they said.

Changes

  • New geode::prelude namespace to replace the old USE_GEODE_NAMESPACE() macro (5af15fb)
  • Add CCNode::removeChildByID (5f3c658)
  • Add CCNode::hasAncestor (38575ac)
  • Add CCScene::get and CCScheduler::get (38575ac)
  • Add geode::cocos::getMousePos (306fde7)
  • Add GEODE_DONT_INSTALL_MODS option to CMake (7ca9959)
  • Add logging std::vector with log:: functions (7305445)
  • Add EventListener::getFilter (5cdfbc3)
  • Add AttributeSetEvent for detecting when attributes are added to nodes (69bd0d9)
  • Add CCNode::addEventListener (along with other related functions) as convenience methods for adding event listeners that target nodes (35f7f86)
  • Add WeakRef as a weak pointer alternative to Ref (see the docs for a tutorial) (e92541a, 0e46362)
  • Add option to ignore invisible children to Layout (152f90c)
  • CCNode attributes now use json::Value over std::any for ABI compatability (7963469)
  • Implement file picker on Mac (d7b0e09)
  • Define CCNode::retainCount inline (57947a9, 72448e1)
  • Layout now inherits from CCObject, allowing you to share layouts across multiple nodes (81472c9)
  • Update TulipHook version (3d339ef)
  • Make sure mod load/enable/etc. events are only ever posted in the GD thread (93fd396)
  • Mod::getResourcesDir now returns geode/unzipped/{mod.id}/resources/{mod.id} in conjunction with CLI v2.1.0 (22a6745)
  • Give a name to ccTouchType (e2e1da0)
  • Fix Scrollbar being funky sometimes (585a9de, 83b0850)
  • Fix mod resources not being loaded if the mod is enabled at runtime (9fb5051)
  • Fix EditLevelLayer description update button ID & layout (21ee689)
  • Fix hooking functions with unpredictable calling conventions (94138f3, 33a2883)
  • Fix setup_geode_mod not linking to Geode if CLI calls are disabled (4318a8d)
  • Fix code editors showing a ton of warnings with $modify (cf1371f)
  • Fix top sprite sizes of CircleButtonSprite and EditorButtonSprite (0a37b01, eabb68b)
  • Fix Mod::enableHook error message (162979c)
  • Lots of bindings on both Windows & Mac (50+ commits related to bindings)

Fix versioning

08 Mar 12:17
Compare
Choose a tag to compare
  • Fix loader minimum mod version preventing the loader itself from loading (ebfa7b2)
  • Fix recursive comparison in VersionTag (1b2c760)
  • geode/unzipped is now deleted on startup if it exists (eb0e4b6)

Final Beta Release

06 Mar 20:20
Compare
Choose a tag to compare

This should fr ong be the final beta release of Geode, as we have nothing left to add or change, only bugs to fix.

Changelog

  • Add Result::ok to convert geode::Result into std::optional (4a15afc)
  • Some field changes (7710fa9, 0706e52, ...)
  • Fix VersionInfo comparisons (0f19f09)
  • Fix layouts ending up in infinite loops (0085265)
  • Fix EditorPauseLayer IDs (0085265)

v1.0.0-beta.8

27 Feb 16:33
Compare
Choose a tag to compare

Still hoping this to be one of the last beta releases. Soon I will speak the truth.

Changes

  • Add support for Geode CLI v2.0.0 (which has not been released yet) (088ac7b, deadb58)
  • Logging no longer causes a crash on invalid formats, but instead just warns (6aba7cf)
  • file::pickFile now uses the last item in the default path as the default filename to save/open (5c9ee08)
  • Fix EditorPauseLayer crashing constantly due to some members being accidentally set to nullptr (33a91d6)

1.0.0-beta.7

26 Feb 13:56
Compare
Choose a tag to compare

This release mainly fixes the crash at opening on MacOS and some artifacts from the new layout system.

Changelog

  • Add Mod::getResourcesDir for getting the mod resources directory (0055032)
  • Deprecate file::listFiles for file::readDirectory (9f60091)
  • Fix getting virtual function addresses for CCFileUtils (c183a35)
  • Rename BasedButtonSprite sprite names to be more expressive (4d2daec)
  • Fix typeinfo_cast causing a crash if passed a nullptr on MacOS (d024dbb)
  • Fix settings not getting broadcasted (7089194)
  • Make Loader::getLoadedMod and Loader::isModLoaded also check if mod is enabled (3222097)
  • Display Geode commit hash in the bottom right of the mod info layer (1dfa907)
  • Fix EditorPauseLayer info labels on the top left being too big (f5983a2)

1.0.0-beta.6

24 Feb 10:31
Compare
Choose a tag to compare

This release brings an overhaul of the layouts system, making it finally production-ready, aswell as applying layouts to many common layers.

Changelog

  • Reworked layouts from the ground up - see the docs page for more information about how the new system works (#137)
  • Update the IDs for a bunch of layers, aswell as adding some predefined layouts (3f64b98, ef9e741, a78bc0c, cb1a6f1, ea037a9, f7ddf0a, ...)
  • Add IDs & layouts to EditorPauseLayer (12d88ae)
  • Add CCNode::insertBefore and CCNode::insertAfter for adding children before/after existing ones (eb10eca, 4613af6)
  • Add CCSize::aspect convenience method
  • Add Mod::getResourcesDir for getting a mod's runtime resources directory (where [mod.json].resources.files are placed) (0055032)
  • Add Mod::addCustomSetting for convenience in registering custom settings (7089194)
  • Add file::readDirectory as a sanely named alternative to file::listFiles (9f60091)
  • Move GEODE_DLL to the structs themselves in JsonValidation (06bc6fd)
  • Versions now support tag numbers & version tags are now used in comparisons. This change does not affect old betas, which still internally report their version as just v1.0.0-beta, but starting with this beta the version is correctly reported as v1.0.0-beta.6 and correctly compared against other versions (bbbf332)
  • Loader::getLoadedMod and Loader::isModLoaded now only return if the mod is also enabled (3222097)
  • Geode's internal mod representation is now included in the loader's loaded mods list (4261e99)
  • Fix settings value changes not being broadcast. This causes an API break relating to custom settings; SettingValue now requires the owner mod ID in its constructor (7089194)
  • Fix some warnings (9c9706b, f7bfa21)
  • Fix CCNode::swapChildIndices (ba0851e)
  • Fix typeinfo_cast causing a crash if passed a nullptr (f4a3258)
  • Fix ranges::reverse causing UB (ffd50eb)
  • Other fixes & improvements (cb00c21)

Bindings

  • Add CCEGLView::getDisplaySize on Windows (5a1545e)
  • Add GameManager::getFontTexture on Mac (fb11ea3)
  • Add m_collidedSlope, m_isCheckpointQueued, m_hasHitRing, m_objectSnappedTo, m_checkpoint, m_hasHitPortal, m_isOnSlope, m_wasOnSlope to PlayerObject (fb11ea3, 14d0ead)
  • Add CCCircleWave::m_color (3be7ae8)
  • Add GameLevelManager::downloadLevel on Windows (3be7ae8)
  • Add GameLevelManager::hasDownloadedLevel on Windows (3be7ae8)
  • Add GameLevelManager::getSavedLevel on Windows (3be7ae8)
  • Add GameLevelManager::saveLevel on Windows (fcfbd01)
  • Add LevelInfoLayer::downloadLevel on Windows (fcfbd01)
  • Add GameSoundManager::get (3be7ae8)
  • Add MenuLayer::create (3be7ae8)
  • Add EditorPauseLayer::updateSongButton and EditorPauseLayer::onSong on Windows & Mac (262c15d)
  • Give proper names to EditorPauseLayer::m_guidelinesOffButton and EditorPauseLayer::m_guidelinesOnButton (262c15d)
  • Fix GameManager::resolutionForKey return type (5a1545e)

Another beta release of v1.0.0

14 Feb 21:48
Compare
Choose a tag to compare
Pre-release

This version includes mostly bug fixes. Mods which used the ModInfo interface directly should break due to a binary change

Changelog

  • Make ModInfo Pimpl 51990ad
  • Fix crash with event listeners 1f7d50a
  • Some bindings 4a9f6ba
  • Make mods binaries not silently fail to load 0eb5f01
  • Assume dependency version is >= comparison by default 41aef57
  • Fix not following thunks 65f2cbb

Fifth beta release of v1.0.0

07 Feb 10:45
Compare
Choose a tag to compare
Pre-release

Changelog

  • add some bindings
  • fix macOS libzstd crash