* New `geode::prelude` namespace to replace the old `USE_GEODE_NAMESPACE()` macro
* Add `CCNode::removeChildByID`
* Add `CCNode::hasAncestor`
* Add `CCScene::get` and `CCScheduler::get`
* Add `geode::cocos::getMousePos`
* Add `GEODE_DONT_INSTALL_MODS` option to CMake
* Add logging `std::vector` with `log::` functions
* Add `EventListener::getFilter`
* Add `AttributeSetEvent` for detecting when attributes are added to nodes
* Add `CCNode::addEventListener` (along with other related functions) as convenience methods for adding event listeners that target nodes
* Add `WeakRef` as a weak pointer alternative to `Ref` (see [the docs](https://docs.geode-sdk.org/tutorials/memory#weakref) for a tutorial)
* Add option to ignore invisible children to `Layout`
*`CCNode` attributes now use `json::Value` over `std::any` for ABI compatability
* Implement file picker on Mac
* Define `CCNode::retainCount` inline
*`Layout` now inherits from `CCObject`, allowing you to share layouts across multiple nodes
* Update TulipHook version
* Make sure mod load/enable/etc. events are only ever posted in the GD thread
*`Mod::getResourcesDir` now returns `geode/unzipped/{mod.id}/resources/{mod.id}` in conjunction with [CLI v2.1.0](https://github.com/geode-sdk/cli/releases/tag/v2.1.1)
* Give a name to `ccTouchType`
* Fix `Scrollbar` being funky sometimes
* Fix mod resources not being loaded if the mod is enabled at runtime
* Fix `EditLevelLayer` description update button ID & layout
* Fix hooking functions with unpredictable calling conventions
* Fix `setup_geode_mod` not linking to Geode if CLI calls are disabled
* Fix code editors showing a ton of warnings with `$modify`
* Fix top sprite sizes of `CircleButtonSprite` and `EditorButtonSprite`
* Reworked layouts from the ground up - see [the docs page](https://docs.geode-sdk.org/tutorials/layouts) 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 `Mod::getResourcesDir` for getting a mod's runtime resources directory (where `[mod.json].resources.files` are placed)
* Add `Mod::addCustomSetting` for convenience in registering custom settings
* Add `file::readDirectory` as a sanely named alternative to `file::listFiles`
* Move `GEODE_DLL` to the structs themselves in `JsonValidation`
* 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
*`Loader::getLoadedMod` and `Loader::isModLoaded` now only return if the mod is also enabled
* Geode's internal mod representation is now included in the loader's loaded mods list
* 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
* Fix some warnings
* Fix `CCNode::swapChildIndices`
* Fix `typeinfo_cast` causing a crash if passed a `nullptr`
- Better support for dependencies with [Geode CLI v1.4.x](https://github.com/geode-sdk/cli/releases/latest): mod dependencies are now automatically installed from the mods index by simply declaring them in your `mod.json`. See [the tutorial page in docs](https://docs.geode-sdk.org/mods/dependencies/) for more
- The `create_geode_file` CMake function has been replaced by `setup_geode_mod`. The old `create_geode_file` function is still available, but will be deprecated in the future
-`Result::except` now works with non-copyable types
-`Zip` and `Unzip` now support in-memory ZIP extraction and creation
-`ComparableVersionInfo::compare` now always returns false if the major versions are different
-`ComparableVersionInfo` parsing now expects equal to be marked with a single `=` instead of two (`==v1.2.3` => `=v1.2.3`)
- Fix `DS_Dictionary`-related `gd::string` Cocos2d functions not being linked
-`CC_DLL` no longer expands to dllexport/dllimport
- The JSON lib now default constructs to object, hopefully fixing uncaught bugs
- Something related to codegen and addresser? I have no clue what it does, so you probably won't have either
* Switched to [a new custom-built JSON library](https://github.com/geode-sdk/json) to replace `nlohmann::json` for compile-time improvements; if you were using the old JSON library, you can add & link to `nlohmann::json` in your own project, or update to use the new API.
* Fix resources not being downloaded automatically by using a fallback to latest release
* Add a new clear instruction popup in case downloading still fails
* String ID hooks now have higher priority, so they should always be applied regardless of if you call `NodeIDs::provideFor` or not (though it can still be called to absolutely ensure the IDs are there!)
- Major rework of the entire framework; most notable changes include switching to a whole new hooking framework (TulipHook), simplifying many parts of the framework, and making it production-ready.
- Jesus H. Christmas Kallen there's like 300 new commits since v0.6.1 I don't think there's a point in listing them all, we basically redesigned the whole framework
- Fix crashes related to setting IDs in `MenuLayer`
- Remove `Loader::updateModResourcePaths` and `Loader::updateResourcePaths`. The minimum mod target version is still v0.4.0 however, as you should never have been using these functions.
- Rework how mod resources are added
- Deprecate `geode::utils::vector` and `geode::utils::container` namespaces and replace them with `geode::utils::ranges`
- Finally added a license to Geode! The framework is now licensed under BSL v1.0.
- Simplified the minimum and maximum loader versions, loader will now load any mod whose target version major and minor match. In practice, this means that for example mods whose target version is v0.4.8 can be loaded by loader of version v0.4.6.
- Add `Geode/ui/GeodeUI.hpp` header for exposing some access to internal Geode UI like opening a mod's settings popup
- Fix crash with settings that could have a slider control
## v0.4.2
- Moved SDK version to its own file so CLI can query it
Note that from here on, changes to the framework were not tracked by versions as the framework was still considered to be in heavy development and not released. Instead, major changes are listed by dates.