This is a maintenance release that is slightly exciting for me and yet boring for ltjBPM users. It adds zero sexy new features, and fixes zero bugs (for none are known to exist). So what changed?
Sandboxing – When running on OS X 10.7 (Lion), ltjBPM is now a sandboxed application.
Application sandboxing is a technology that prevents applications from doing things that users don’t expect, by preventing them from doing things that their developers don’t expect…even if the application has malicious code injected into it by a piece of malware after it’s on the user’s machine.
ltjBPM runs in an almost perfectly-minimal sandbox, in that it requires exactly one additional entitlement: the right to send Apple Events to iTunes. It can’t use the network, it can’t read or write files at arbitrary locations on the user’s hard disk, and it can’t do various other things that a bizarro-hijacked copy of ltjBPM might want to do. The world can rest a little easier tonight. So what else?
Built using Xcode 4 – ltjBPM is now maintained, built, tested, and released using Xcode 4 on OS X 10.7 (Lion).
This is one of those things you wouldn’t think would matter, and one might argue shouldn’t matter, but in reality mattered a great deal to the supportability of the application. Even in the short term, actually.
This is in large part related to the sandboxing feature described above, but was also a consequence of my using some 3rd-party code in the interface that allows users to select their own keyboard shortcuts for things. Specifically, I used an Interface Builder plug-in to, you know, build the one rich and complex interface that exists in the application: the Preferences panel. The use of that plug-in (part of ShortcutRecorder, which probably adds as much value to my app as all of the code I actually wrote from scratch) actually made my interface resource un-openable in Xcode 4. Not “oh, this looks a little funky in the editor or requires some extra fiddling at the source layer,” but “unresolvable errors occur shortly before Xcode gets all stabby with its internal organs.”
So I removed the dependency on the plug-in portion of ShortcutRecorder (again, a wonderful bit of code), added some extra Obj-C code to initialize the controls just-so, and voila. With this stuff out of the way, I can start to make headway on a couple cool new features.
New description text in the Mac App Store entry – Really? Yes. It’s part of the user experience, so it matters. File under “iterative sweating of details.”
Simplified copy, more straight-forward, cleaner. Now mentions the complete built-in instructions, and where to find them (Help > ltjBPM Help menu item), because people occasionally emailed to ask how to use the program. I guess so few apps ship with decent Help facilities now, folks just assume they aren’t there!
I also mention, at the bottom (for dedicated readers, you see) that:
As of this writing, no crash report for ltjBPM has ever been received by Apple or forwarded to the author, for this or any previous version offered through the Mac App Store.
If you look at the reviews in the U.S. store portal, you’ll see why I felt a need to get that little gem off my chest. :)