General:
- More nullability annotations.
- Continuing work on encryption support.
- Fix uses of deprecated API.
Configurations:
- Enabled CLANG_WARN_INFINITE_RECURSION and CLANG_WARN_SUSPICIOUS_MOVE
Scripts:
- BuildStringsFromTarget now ignores "empty" output files.
- Added couple more of our helper scripts, ChangeStringEncoding and
DumpEmbeddedPlist.
- rubylib/xcworkspace.rb #add_dir_ref now handles folder references
appropriately.
OmniBase:
- Extend -[NSError(OBExtensions) causedByMissingFile] to also include
NSOSStatusErrorDomain/fnfErr on the Mac. We see this in practice from some
OFSFileManager instances.
- Added `-[OBLogger processLogFilesWithHandler:]`.
- Wrap `__attribute__((constructor))` function bodies with `@autoreleasepool`.
- Added an ARM variant for `_OBStopInDebugger`.
- Added a modulemap for OmniBase on watchOS.
OmniFoundation:
- Added `+ (id)addObserverForPreference:(nullable OFPreference *)preference
usingBlock:(void (^)(OFPreference *preference))block`.
- Updated our +remove:fromReferences: debug assertion to stop giving false
positives when removing a weak reference during an object's -dealloc method.
- Added support for comparing two similar weak references with -isEqual:,
so you can remove a weak reference by creating a new weak reference to
the same object and using -removeObject:.
- When creating a temporary OFWeakReference to remove a matching
weak reference, we now use the API -initWithDeallocatingObject: which
doesn't try to take out a new weak reference.
- Added Some NOESCAPE annotations
- Reworked OFXMLParser so that we can handle unparsed elements without access
to a contiguous buffer representing the entire docucument.
- Add -[NSArray(OFExtensions) any:], a sibling to -all:
- Did a nullification pass in NSFileCoordinator(OFExtensions) to make it
easier to use in Swift. But Swift doesn't support bridging throwing
closures, it still isn't great. This probably calls for writing a Swift
wrapper in OmniFoundation that hides the ugly.
OmniAppKit:
- Convert NSView-OAExtensions to ARC in order to fix a crashing bug involving
a zombie.
- Define OAPlatformColorClass.
- Added a hook for OAAppearance subclasses to specify a bundle other than
their own in which to look for their plist.
- Update NSAttributedString extension method drawInRectangle:alignment:verticallyCentered:
to draw using API that handles truncation appropriately (since 10.5).
- Factored out -isLightLuma: instead of repeating it in the iOS and Mac sides
of this code (and making available for use elsewhere).
- Give OAWebPageViewer's WebView its own independent .preferenceIdentifier,
so changing the preference settings for one of them doesn't affect the
settings for the others.
- Use dispatch_once() to initialize the combined color table used by
+colorWithSimilarName: and -similarColorNameFromColorLists in a
thread-safe way.
- Updated OALabelField to disallow vibrancy.
- Copying the "CredentialsPrompt" class from OmniFocus down into OmniAppKit
(as OAPassphrasePrompt) and generalizing it for use with document encryption.
- Changed -[NSWindow addConstructionWarning] to always add the bar at the top
of the list of title view accessor controllers.
- Moved OASwoopView to the obsolete group.
OmniInspector:
- Don’t delay for a double-click except when it’s the selected cell.
This makes tab-switching faster, because you don’t have that
double-click delay.
- Updated to avoid vibrancy in attached inspectors.
- Deleted -[OITabbedInspector shouldHideTabWithIdentifier:], which is a hook
for subclasses to hide tabs.
- Support for the app delegate to decide that certain inspector tabs should
just not be loaded.
- Support for inspecting text views in the content area of a document with
attached inspectors.
OmniSoftwareUpdate:
- Updated for the Mac App Store requiring the OSUCheckService XPC service
having a registered bundle identifier.
- Copy handler block to avoid a crash.
- Give each WebView its own independent .preferenceIdentifier.
- Make sure we're not passing nil data to -[NSXMLDocument initWithData:options:error:]
- Add iPhone 7 and 7 Plus to the OSU device list
- Stop using http when fetching track info for our software update feeds.
This lets us get rid of the ATS exception for update.omnigroup.com.
- Invoke -processTrackInformation: on the main queue.
OIF:
- Removed this framework
OWF:
- Converted to ARC.
- Replaced the OWFWeakRetain protocol (and its implementations) with
__weak references.
- Fixed deprecated API usage in OWFileProcessor.
OmniDataObjects:
- Make sure that we fill in outError when we return NO
from FetchObjectFaultWithContext.
- Use the error's description, not its plist representation, when logging.
- Updated the insert and update object validation in ODOEditingContext to
use fast enumeration instead of CFSetApplyFunction.
- Removed deprecated RunUnitTests shell script from build phase.
- Add a missing type to an ODODatabase method parameter.
- Fixed an over-release of the objectID in an error case in
_fetchObjectCallback in ODOEditingContext-Internal.m
- Added a convenience to run a SQL SUM statement over an attribute in
the database.
- Fleshed out missing support for ODOAttributeTypeInt64.
OmniFileExchange:
- Better support for macOS Sierra's syncing of ~/Documents and ~/Desktop.
If an account's sync folder is on your Desktop or in your Documents folder,
we return a "Local documents folder cannot be used" error and refuse to sync.
OmniUI/iPad-Document:
- Support for 1Password integration when adding server account.
OmniUI/iPad:
- Update for iOS 10 removing URL-ificition of links in UITextView.
- Add an option to OUIPasswordAlert to require passphrase confirmation.
- Support for deferring URL actions while the app is locked.
OmniUnzip:
- -[OUUnzipArchive unzipArchiveToURL:error:] now allows its target directory
to exist, unzipping its contents alongside any existing files
- Added a method to OUUnzipArchive to get input stream for an entry rather
than an NSData instance
- Factoring out some zipfile <--> NSFileWrapper code from OmniUI-Internal.