Permanent Eraser 2.8.1: The Release That Never Was, Then Was, Then Wasn't Again, and Finally Was

16th June 2020 | Programming

Plans are meant to provide guidance and direction, but even with the best of intentions, they can be led astray. When Permanent Eraser 2.8.0 was released, the original intention was that 2.8 was going to be the last significant release of the app until 3.0 was completed. Unfortunately, changes in the latest two versions of macOS (Mojave and Catalina) have caused numerous issues with Permanent Eraser which needed to be addressed first before moving onto the more grander ambitions of the next major version. Numerous people have written in to mention that Permanent Eraser was having issues on macOS Catalina, especially regarding erasing the Trash. After some investigation I discovered that Apple has further increased their security measures, which included locking down the Trash. To allow Permanent Eraser the ability to once again erase files from the Trash, the user needs to enable Full Disk Access. Permanent Eraser 2.8.1 is intended as a stopgap measure to help address some of the most egregious issues with Catalina and Mojave.

Several weeks ago, I was doing some final testing and was just about ready to release Permanent Eraser 2.8.1. I had tested across a variety of systems from a PowerBook G4 running Mac OS X Leopard to an iMac running macOS Catalina, and things were looking good for the most part. Then Murphy’s Law inevitably interceded...

On macOS Catalina, I downloaded the DMG containing the final version of Permanent Eraser, and when I opened the app, this message appeared.

One of the key things I focused on with this release was adhering to Apple's increased security, which meant code signing and the new notarization process. I had already notarized a number of games and EdenMath 1.2.2, none which had encountered this particular issue. I performed the standard checks and verified that the app was properly code signed and notarized, yet Gatekeeper was being fiendish and elusive in its reasons for suspecting that something wasn't quite proper with the app.

I checked through the console logs, particularly looking for anything mentioning Xprotect which might give me a hint why I was getting this error. Unfortunately, I still have not resolved this particular issue, which caused me to pause on releasing the app for two weeks. However, if you are using Permanent Eraser 2.8.1 on Catalina and receive this error, right-click on the app and select Open and follow the steps to allow Permanent Eraser to be opened. This is an issue I'm going to continue investigating to try and correct for Permanent Eraser 2.9.0.

In my investigations to determine why Catalina's Gatekeeper was complaining, I did learn something new in the process. Disk images (dmg) can also be code signed and notarized, not just apps and packages.

codesign --force --sign "Developer ID Application: John Doe (12AB34567C)" <pathToDMG>

spctl -a -t open --context context:primary-signature -v <pathToDMG>

The original plan was to release PE 2.9.0, until I realized that to fully implement all of the improvements would require a little more effort than I had originally expected. As I was working through the set of issues which PE was having on newer versions of macOS, I had resolved most of them, but one issue was still prominent: the progress bar was not updating properly, and this was especially noticeable on Catalina and Mojave. The progress bar might make an initial jump, but then it wouldn’t move much (if at all) until it was done erasing. I researched this issue and discovered a way to resolve it, but it required using newer technology (hello GCD!) than what the base version of PE could provide.

I have always tried to support as many versions of macOS as possible and have always been cautious about raising the base minimum for my apps. However, in this case, there are likely more people using macOS Mojave and Catalina than are using Leopard, so to resolve some of the most egregious issues on Catalina, I’ll need to finally drop support for Mac OS X Leopard and PowerPC processors. It’s been a great run, and I held off as long as possible, but that time has come to an end. PE 2.8.1 is final gift for older versions of macOS/OS X/Mac OS X, especially those that might still be running on a PowerPC processor.

When I was starting work on PE 2.9.0, I initially imported it into Xcode 11, and encountered a lot of deprecation warnings in my code. This is yet another sign of the times that the next major version of Permanent Eraser will be a massive rewrite to bring PE into the modern age. There are many parts of PE’s code which are still original from 17 years ago, and the way it was originally architected shows. That the app still manages to run on modern systems is a small miracle in itself, especially considering how Apple tends to force developers to continually keep up with the "latest and greatest."

So much of the code has become deprecated over the years, that it is certainly tempting to throw away every line of Objective-C code and start fresh with Swift. To Objective-C's credit, though, the language has remained fairly stable, even with the additions of Objective-C 2.0 and ARC, unlike the rapid mutations that Swift underwent for its first couple of years. Hopefully Swift (currently at version 5.2) will remain relatively stable so any future updates won't require a bunch of unwanted maintenance just because the language changed again.

Regarding app rewrites: I eventually did an entire rewrite of the iOS version of EdenList because there had been so many changes in iOS development since EdenList's release in 2010, that I could no longer make changes to the original code without something breaking. That forced my hand to perform a complete rewrite of the app. EdenList is only a couple thousand lines of code and is a fairly simple iOS app. Permanent Eraser is far larger and more complex, so I imagine rewriting and reworking the app will take a significant and focused effort. However, it is not just rewriting the app which will be so time consuming, but the addition of many new features I’d like to include into the app.

Next up will be Permanent Eraser 2.9.0 and reasons why it won't be available on the Mac App Store.