Releases: hexawyz/Exo
2025-05-27
Features since last release:
- All logs will now be directed to the Windows event log (no more text logs, the
logsdirectory of Exo can be deleted) - UI Errors will be written to the Event Log (Not all errors, but at least all XAML-related crashes should write an entry)
- Better support for Elgato lights by addressing the devices by IP addresses rather than domain name.
- Lighting effect fixes in Aura RAM driver (Some parameters were ignored or not properly propagated, etc)
- Kraken Z: Extensive support for the basic features of NZXT lighting. All intrinsic effects are supported, support for new accessories can easily be included. (For now, F120RGB and F140RGB)
- Aura RAM: Initialization (startup) should now be slightly faster thanks to reading memory in blocks rather than byte by byte when possible.
- Large improvements in RGB lighting management:
- Effects can now have a variable amount of colors, as it is supported by some devices (Razer, NXZT, IT5702 although not yet exposed)
- A system of conversion has been added to convert between basic effects and device-specific or more complex effects (e.g. flash into flash with speed setting), which is for now only used to set a centralized lighting effect. (Although these effects can also be registered in configuration files and will work)
- Centralized lighting mode supporting a few hardcoded effects. All compatible RGB zones will automatically switch to a similar effect of the same color if possible. (Other lighting zones will be disabled)
- UI can now export and import RGB lighting configuration. Use this to save your preferred settings and restore them later on, after experimenting with something else. Importing lighting configuration will only load it in the UI, clicking
Applyis still required afterwards. - Support of effects in all drivers has been simplified and normalized a bit more: Only the most specific effect of each kind will be exposed by devices (with exception of advanced "expert" effects for now only available on IT5702), and distinction has been added between pulsing and breathing (as for example, NZXT supports both, and naming was wrong in multiple cases previously)
- Added icon variations for lighting zones (Not perfect, but a fan will show something vaguely like a fan)
- Lighting effects are now ordered in a nice way in the UI, independent of implementation order in the driver.
- A toolbar has been added to the lighting page, wich better replaces the lonely color button that was present in the past.
- Color picker appearance has been fixed (especially the page showing the predefined palette)
- Better UI components to configure lighting effects. Larger color swatches and more expressive UI to pick effect direction for effects that support it.
- Mostly to support centralized lighting, global reset/apply buttons have been added to the lighting page. Clicking apply will send all updates to the service (both centralized lighting and device updates), and clicking reset will similarly reset the state for both centralized lighting and individual device lighting.
- Make the UI entirely AOT-compatible
- Thanks to the use of compiled bindigns in XAML, many random problems caused by improper XAML states changes from WinUI will be fixed (problems such as assigning the wrong type or wrong instance to a property…). These would occasionally crash the app, so this should hopefully be better now. Better performance of the UI can also be expected, although I doubt it is measurable in any reasonable way.
- A hopefully near-future release will distribute the UI in a fullly prebuilt binary form for better (startup) performance and better memory usage. This is sadly currently blocked by the
ColorPickercomponent 😅
- Most of the configuration backend has been migrated to source-generated JSON, which should improve startup performance
- LG Monitor: Try to identify when an invalid serial number is read from the config (can happen due to sharing of the I2C channel with other parts of the system, mainly that annoying HDCP stuff)
- Reduce the performance hit and memory usage caused in the Service when closing the UI.
- Support new PawnIO installer
- Fixed a few cases were existing configuration would still be overwritten due to improper equality comparison.
- Various smaller fixes (improper valus sent for some battery states, idle timer not transmitted to the UI properly, memory leaks due to some unreleased cancellations, some tiny improvements in memory usage)
- Updated the FluentSystemIcons font bundled with the app. (Should allow to display more varied glyphs)
Caution:
- Some additional changes in the RGB lighting management and the general configuration handling may lead to configuration errors during service startup. Many of such problems will resolve by themselves, but in case of more important problems, please delete the problematic parts of the configuration, or the whole
cfgdirectory of Exo. (cfgdirectory located next toExo.Service.exe)
Prerequisites:
Artifacts from this build.
2025-04-21
Features since last release:
- Power sensors for Intel CPUs (includes the iGPU power consumption if applicable)
- Significantly improved the memory usage of the service by
- Getting rid of protobuf-net and GRPC in favor of a custom protocol (Also an improvement for the UI)
- Getting rid of ASP.NET Core runtime that was only necessary for GRPC
- Overhauling the persistence of lighting effects to not rely on any dynamic code
- Thanks to the improvements, the UI should now show up more quickly
- Various small bugfixes and stability improvements (some problems were indirectly hidden by the use of GRPC)
- Ability to pin some sensors on the homepage by setting them as favorite (little heart icon in the sensors page)
- The size of the installation has been reduced, thanks to the improvements listed above
Caution:
- Due to a change in the way lighting effects are persisted, configuration for all lighting zones will be reset. The files for the old configuration are not overwriten so that you can manually look at them if needed, but taking screenshots of your existing configuration before updating might be simpler.
Prerequisites:
Artifacts from this build.
2025-03-22
Features since last release:
- Added temperature sensors for Intel Processors through
PawnIOdriver (see prerequisites) - Use latest Windows App SDK
- Migrated the sensor updates for the UI outside of GRPC, which should hopefully help having a flatter memory usage
Prerequisites:
Artifacts from this build.
2025-03-11
Features since last release:
- Stability improvements related to some specific features (Mainly: Elgato light driver crashes, Monitor control proxy capabilities retrieval reliability)
- Register the service for power notifications (To be especially useful later on with programming features)
- Reapply lighting effects when getting out of sleep mode (NB: This is actually only necessary for some specific devices, such as RGB Fusion 2.0 LED Controller… And only because of BIOS interference.)
- Reduce size and memory usage of the user-mode helper by getting rid of the GRPC stack there. (Shaved about 1MB of file size in the helper)
- Improvements for support of mobile NVIDIA GPUs that can be put offline. (This is not perfect, but nvapi seems to have built-in mitigations that help clients work most of the time)
Prerequisites:
Artifacts from this build.
2025-03-02
Features since last release:
- New lamp/light feature allowing to control external lights (On/Off, Brightness, Color temperature)
- Support for discovery of devices through DNS-SD (mDNS)
- Support for Elgato light devices discovered through DNS-SD (Ring Light, Key Light at least)
- Show lamps on the home screen
- Stop binding a TCP socket on startup (from the HTTP server that is not used)
ℹ️ Due to the introduction of DNS-SD features, Exo will now trigger some requests on the local network, unlike previous versions.
Elgato lights are also controlled though HTTP requests, which will be sent directly to the device.
I have not observed this to be a problem in practice, as the CPU continues to stay mostly idle (especially compared to the software that this replaces 😁)
However, you are free to manually delete the DNS-SD plugin after installation if this were to bother you.
Prerequisites:
Artifacts from this build.
2025-02-21
Features since last release:
- Improvements for NVIDIA GPUs
- Expose fan control for GPUs directly supported by NvAPI (At least all recent RTX FE cards; 3rd party may use custom onboard devices)
- Report load using the Dynamic PStates API instead of utilization samples. Results should be the same, but explicitly polled by the service rather than pushed via a callback
- Use a native memory allocator for the largest part of image processing operations. This should greatly reduce memory that stays allocated after transforming an image, especially animated GIFs
- Translation of many parts of the UI in Japanese
- Show visual notifications for some errors generated by the service when called by the UI (e.g. reason of failure to add an image to the library)
- A few smaller UI fixes or cosmetic tweaks
Prerequisites:
Artifacts from this build.
2025-02-15.1
Features since last release:
- Image transformation metadata is now persisted on disk, which allows assigned images to be restored on the devices very quickly upon service start (especially heavy GIF images 🙂)
- Small bugfix in Kraken Z memory allocation (mostly for very large images, would not corrupt anything but fail at upload)
- Make sure that the embedded monitor UI is disabled when changes are being applied.
- Sanitize filenames when opening images in the image library UI instead of always generating a random name.
Note:
Image transformations in the service may cause memory usage to rise significantly. You may want to restart the service after applying new images to embedded monitors in order to reclaim the memory. This is not a critical problem at the moment, but it will have to be fixed in the future.
Prerequisites:
Artifacts from this build.
2025-02-15
Features since last release:
- Add an image library used to manage images used by the service (This avoids relying on external image files, hopefully making the service more reliable)
- Embedded monitor support (e.g. Kraken Z, Stream Deck)
- One can assign any image from the image library to an embedded monitor
- Crop region of images can be selected in the UI
- Settings will be persisted and reapplied upon startup and device connection
- Images are automatically transformed to the proper target format in the background service and cached on disk
- Improved support for NZXT Kraken Z devices
- Listed a few more devices as compatible with the driver, from information found on internet. (Not tested)
- More complete and robust image memory management, allowing to efficiently swap images and properly free enough memory to store requested images.
- Device is entirely managed from the UI, making use of the new Embedded Monitor feature
- Improved support for StreamDeck XL:
- Idle Timer
- Buttons are exposed as Embedded Monitors (key presses are not handled yet)
⚠️ Images assigned to buttons will be persisted and reapplied automatically on startup or device connection, which will temporarily override what has been displayed by other software. You should probably avoid playing with it for now if you want to avoid this, as settings can't be cleared from the UI.
Prerequisites:
Artifacts from this build.
2025-01-11
Features since last release:
- Many small reliability improvements, including bugfixes in the Razer driver following past updates. Also migration to .NET 9.0.
- Cooling module improvements
- Support for hardware cooling curves
- Persistance of cooling settings for all configured coolers
- Restoration cooling settings upon startup and when a device becomes online
- Cosmetic improvements in the power curve editor
- Proper state updates in the cooling configuration UI
- Kraken Z driver updates
- Hardware cooling curves support (A default hardcoded curve will be applied on driver startup just in case)
- Image memory management allowing to upload any image to the device
- A gif file named
nzkt-kraken-z.gifwill be uploaded to the device if found on startup, otherwise a static image will be generated on the fly. - As long as hardware curves are enough for you, CAM can now be discarded, thus saving on CPU and RAM
Prerequisites:
Artifacts from this build.
2024-10-02
Features since last release:
- Fix of Exo.Overlay not starting up (there was an error in the app manifest)
Prerequisites:
Artifacts from this build.