Source for many of The Omni Group's frameworks
Objective-C C HTML Ruby Shell Ragel in Ruby Host Other
Latest commit c60b89e Jul 8, 2016 @tjw tjw Updated with changes from OmniGroup svn [r262549:265076]
  - More nullability annotations.
  - Fix some regression with handling certificate trust alerts.
  - A few minor edits to allow building with Xcode 8.
  - Updated localizations.

  - Set SWIFT_VERSION=2.3 to allow building with Xcode 8 with minimal changes
    for now.

  - ListSourceFilesInTarget can now ignore derived source files.

  - Clean up some log spam.
  - Deal with Swift choosing Int over UInt in NSPredicateEditorRowTemplate
    init methods.

  - If we are running unit tests and using a host app, check the host app for
    a OFControllerClass setting if the unit test bundle didn't specify one.
  - Add OFSetMutableSetProcessingRemovalsFirst().
  - Simplify -[NSSet setByPerformingBlock:].
  - Added support in OFWeakReference for maintaining arrays of weak references
    to objects of a generic type. In particular, this is useful for things like
	arrays of protocol-typed observers.
  - Added -min:/-max: to NSArray.
  - Added -removeObjectsSatisfyingPredicate: to NSMutableArray.
  - Export the OFControllerStatus and OFControllerTerminateReply enums in a
    more Swift friendly way.
  - Added OFFileTypeDescription, factored out of our internal code.
  - Added some debugging conveniences on NSCache so that you can examine the
    contents of a cache in the debugger.
  - Added named component accessors on OFVersionNumber.
  - Added convenience comparison methods on OFVersionNumber.
  - Removed OFNaN originally added for Radar #3478597. Use NSDecimalNumber
    +notANumber and friends instead.
  - In _OFCheckFilesSame, put the XCTFail after diffing the two files.
    XCTFail can throw an exception if the test case is set to not continue
	after failures, which was hiding the diffs in the test that were causing
	the error.

  - Removed unused -fileManagerShouldUseCredentialStorage:.
  - Incur one copy up-front, to avoid a large number of redundant large copies
    later in encryption code.
  - Additional commentary and defensive coding.

  - Clean up a warning in the recently merged ColorSync changes.
  - Updated OACertificateTrustPrompt to handle presenting a dialog
    for a server certificate error, not just a challenge, and to
    support calling a block when the user chooses to trust the
  - Updated OARegExFindPattern to use NSRegularExpression support
    for replacements.
  - Switch the code to convert to OAColor to look at the color space model.
  - Allow about: and applewebdata: URLs in -_urlIsFromAllowedBundle:.

  - Remove support for the OITabbedInspectorUnifiedLook default.
  - Added OITabMatrixNoHighlightStyle.

  - Resurrected some code from a few years ago which translates SVG
    paths into CoreGraphics paths. Has some clang-sa warning still to clean up.

  - When an automatic check finds a new update, we now wait for the app to
    be active before displaying the update window.
  - Don't schedule any update checks in demo builds.
  - Add recent devices to OSUDevices.json: the 9.7" iPad Pro and
    the early 2016 12" MacBooks.
  - OSUInstaller perform delays sending -terminate: to NSApplication.
    If we send it directly from the dispatch block, we end up hanging if
	application specific code puts up a modal panel as part of its
	termination sequence.

	Added -controllerCancelledTermnation to the OFControllerStatusObserver
	protocol. OSU uses this to listen for termination cancellations while it was
	waiting for the application to quit during its "Install & Reopen" phase to
	abort the current update.

    If the user cancels quit, OSU abandons the current update.
  - Added a shell script phase to double-check details of the priviledged
    helper tool that can be used when installing.

  - Made URL scheme comparison case insensitive.
  - Add ability to temporarily disable the undo button.

  - Don't show data providers in demo builds.
  - Updated -[OUIDocumentAppController presentSyncError:] to properly
    detect and handle server certificate errors.
  - Ported to OUIReplaceRenameDocumentAlertController from OUIReplaceDocumentAlert.



Checking out the source

git clone git://
git submodule update --init


  • We currently use Xcode 7.3.1 for iOS, watchOS, and Mac OS X. You'll probably have the best results if you do too.
  • Add the projects you want to your workspace.
  • Take a look in the Workspaces directory for a sample workspace for the TextEditor iPad example app.

Supported Targets

  • We require iOS 9.3 and Mac OS X 10.10.

Configuring the Source

We place our project-wide configuration options in xcconfig files, under OmniGroup/Configurations. The naming scheme of the files is fairly straightforward, hopefully. Each project has Omni-Global-{Debug,Release,...}.xcconfig as the basis for the corresponding configuration. Each Mac target has Omni-{Bundle,Application,Tool,...}-{Debug,Release,...}.xcconfig and each iOS target has Touch-{Application,Library}-{Debug,Release,...}.xcconfig. Each of these end point configurations when #includes 'superclass' configurations (with "Common" in the name).


The Workspaces directory contains a couple sample workspace that can be built from Xcode.