Hi everyone! I'm very excited to share with you what I've been working on during the past two months. In fact, let's get straight to it! Here's what to expect from iCleaner (and iCleaner Pro) 7.5.0:
New, modern cleanup user interface
You probably already saw something similar some time ago on Reddit, in a post by André Givenchy. In case you didn't know already, I later contacted him and decided I'd be implementing some of his awesome design.
This is definitely not all of it, as a major UI revamp based on André's design is scheduled for the next major release, but I felt like the cleanup UI needed some love (it was never substantially improved since the original iCleaner release). I like it a lot, and I hope you like it as well!
Battery usage data cleanup step
This new cleanup step removes archived battery data that has been hogging quite a bit of space for some of you, according to many Reddit threads. It is a perfect addition to the already extensive functionality provided by the app, and I think many of you will be able to fit quite a few more songs on their devices thanks to it.
I was also planning to implement an Apple Music & iTunes Match step, but I figured I'd do that when the next public jailbreak is available, mainly as it may require some trial and error (and restores :p) during its implementation.
Greatly improved Cydia Substrate addons tool
This is probably the single tool that received the most love during this update. What changed exactly?
Re-enabling dylibs before uninstalling is not necessary anymore: iCleaner Pro takes care of keeping the dpkg file lists in sync with the current state of the Substrate dylibs. ELI5: you can just go straight to Cydia and uninstall the faulty tweak you found while troubleshooting, without enabling it. This effectively allows you to forget about this tedious aspect of the tool, and maximizes its troubleshooting effectiveness.
Dylibs that are required by other tweaks to work correctly are now orange-colored: you were used to seeing the Substrate Safe Mode dylib marked with an orange switch, indicating that disabling it is not a wise idea. This convention is used further in iCleaner Pro 7.5.0 to mark tweaks that are needed by other tweaks in order to work correctly. Disabling "orange" tweaks can cause other tweaks to malfunction and crash SpringBoard, forcing you to volume-up boot. Dylibs that should never be disabled (except in extremely rare circumstances) are now marked in red.
Tapping on a dylib now also shows you its dependencies and dependants: "orange" tweaks can only be disabled safely if all the tweaks that depend on them are disabled as well. Tapping on a dylib shows you its dependencies (other dylibs the tweak depends onto) and dependants (dylibs that depend on it). Manually keeping track of all of this can be tedious, which is where the next feature comes to the rescue.
Tweak dependencies are automatically handled by default: the "automatically manage dependencies" setting (enabled by default) automatically toggles dylibs based on their dependencies while you tap on switches. This means you don't have to worry at all about the previous points, given that you keep the setting enabled. There are circumstances under which you may need precise control over which dylibs are toggled, which is why you can toggle this setting off to restore pre-7.5.0 functionality.
Combined together, all of this strongly minimizes (and sometimes entirely eliminates) the chance that you are thrown into a respring loop while troubleshooting faulty tweaks via the Substrate addons tool, making it much safer to use.
Technical caveats (feel free to skip this, as it contains technical info you may not be interested in): I'm grabbing dependency info by querying dpkg, meaning the dependency graph I'm building and using is a replica of the dpkg dependency graph. This has some caveats, especially regarding tweaks that have multiple dylibs, since it doesn't allow me to tell which dylib has a specific dependency. While it won't cause harm (auto dependency management will just "toggle more stuff than actually needed"), a better solution would involve checking the dylibs for LC_LOAD_* commands, though the dpkg approach is way simpler and effective enough for now.
Improved preference files tool
Many of you have been asking me for a tool to automatically get rid of preference files from uninstalled tweaks. While it's not possible for me to do this programmatically, some developers (many of them, luckily) respect the standard to name preference files after the bundle identifier of their app or tweak. Therefore, I extended the dpkg integration further by attempting to resolve the filename of each preference file against the list of installed packages and apps.
While again this won't result in a 1:1 match, it will correctly recognize many files. Just be aware that you should not assume a specific preference file belongs to an uninstalled tweak just because iCleaner Pro cannot automatically find a suitable match.
Full theming support
Before version 7.5.0, you could only theme the provided assets of the app via WinterBoard or Anemone. Starting from version 7.5.0, you can theme most parts of the app (including many programmatically generated UI controls) by providing an Info.plist file in the iCleaner bundle for your theme.
Make sure to check out the full theming documentation. I also released a separate package, named "iCleaner Dark Theme", that makes iCleaner like what you see in the screenshot up there.
That's not all of it! There are many additions, improvements and bugfixes in this release. Yes, I also fixed that odd issue where iCleaner Pro could start crashing when dylib dependencies weren't respected while disabling Substrate addons. You can read more about them by checking out the full changelog.
iCleaner Pro 7.5.0 is available right now on my Cydia repository (http://ib-soft.net/cydia) and it will soon be available in its "standard" variant on the BigBoss repo.
Feel free to report any issue you may experience via email at firstname.lastname@example.org.
You can also follow me on Twitter (@IvanoBilenchi), if you wish to.
Thank you for reading!