Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Commits on Apr 10, 2015
  1. @tjw

    Updated with changes from OmniGroup svn [r220076:231148]

    tjw authored
      - Now builds with Xcode 6.3 and the Mac OS X 10.10 or iOS 8.2 or iOS 8.3 SDKs.
      - Fixed lots of paths to frameworks in xcodeproj files that Xcode mangled
      - Fixed up deprecation warnings
      - Mark frameworks used our extensions as 'APPLICATION_EXTENSION_API_ONLY = YES'
      - More ARC conversion, or making public headers ARC friendly.
      - Various localized string file updates.
      - On the Mac, we now always build with @rpath for frameworks and have a copy files build phase to install frameworks in the app. This is important for debugging embedded XPC services that link those frameworks too. Additionally, this allows launching Debug-built apps w/o dyld environment variables. NOTE: Xcode tries to be helpful and insert a DYLD_FRAMEWORKS_PATH environment varible. To get the installed copies, your scheme needs "DYLD_FRAMEWORK_PATH=${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Contents/Frameworks".
      - Enabled GCC_NO_COMMON_BLOCKS and fixed resulting problems.
      - Added -DNSApp=Use_NSApplication_sharedApplication to discourage use of the NSApp global.
      - ListMissingRetinaImages handles 3x images.
      - More support for parsing Xcode projects and workspaces.
      - Added -[NSError causedByNetworkConnectionLost] convenience method.
      - Refactored OBBacktraceBuffer a bit to make the right bits public.
      - Added PRIxCFIndex and PRIXCFIndex format specifiers.
      - Added a hack for Xcode 6.2b4 (disabled by default) that will likely be removed in the next push.
      - Made OBASSERT_NOT_REACHED log a backtrace via OBRecordBacktrace(), even in non-debug builds.
      - Added OB_BRIDGE_RETAIN and OB_BRIDGE_TRANSFER helpers for ARC conversion.
      - Added OBCallBoolReturnIMPWithObjectObject() and OBSendBoolReturnMessageWithObjectObject() helpers for ARC-friendly calls to method IMPs.
      - Added OFRunLoopRunUntil(), inspired by <> but rewritten to use a timer to avoid spinning the runloop.
      - Removed NSFileCoordinator extensions for dealing with bugs in case-only renames, as these have been fixed in the OS(es).
      - Add support for configuration options that can be changed at runtime (via URLs and the configuration UI in OmniAppKit).
      - Extracted a -parseQueryString: method in OFMultiValueDictionary to allow handling the key/value pairs.
      - Fixed crash in OFRelativeDateParser when given "today at noon".
      - Improved interpretation of short months/days ("mar" in Spanish should be Martes, not March).
      - Added file manager extension for looking up group containers in various store configurations.
      - Add a unique identifier to the temporary collection used for conformance checks so two devices can do checks at the same time.
      - Retry conformance checks a few times on network timeouts.
      - Added ODAVURLResult helper class to report both the URL and redirects. API clients can then use this to reduce the number of redirects they hit.
      - Added workarounds for URL encoding bugs in Apache/svn.
      - Added a notion of retryable-ity to ODAVOperations and obey that when retrying for connection loss.
      - Added +[ODAVOperation suggestAlternateURLForURL:withRedirects:] which can be used to "pre redirect" operations that happen soon after a ODAVURLResult that has redirect entries.
      - Note when the Destination of a MOVE/COPY is something that needs a redirect.
      - Add ODAVUpload helper class, which can upload a file wrapper.
      - Added some new tests for redirect handling.
      - More work on encryption/Security framework wrapper extensions for document encryption.
      - OFScanDirectory() now takes an error handler and calls it to figure out what to do about errors.
      - Added OFFileEdit to represent a file version (at least in a NS/UIDocuemnt based world).
      - Lots of new methods on existing classes.
      - Removed unused OFFilePresenterEdits class.
      - Added ODOIsTruePredicate().
      - Use the new OFFileEdit class to represent a 'file modification' (inode, mtime, original URL).
      - Better error handling of errors when scanning a document tree that avoid thinking that documents have gone missing.
      - Better collection of the file modification information from w/in a file coordinated block.
      - Add -addDocumentInFolder:baseName:fileType:fromURL:option:completionHandler: for better document creation from a template.
      - Improvement/cleanup of notifications to higher levels so that they can manage things like preview caches.
      - Detect when one OmniPresence folder has been placed inside another. Disable syncing for the inner folder and report an error.
      - Disable syncing on an account if too many errors happen in a short period of time.
      - Improve reliability of reported error and last sync date in the activity classes.
      - Keep track of recent redirects and use those to avoid further redirects in the same sync operation.
      - In Mac accounts, avoid re-resolving our security scoped bookmark when we don't need to since this releases our sandbox privledges briefly and we might be syncing that account.
      - If a directory scan fails, note that and don't report documents as missing. On the next sync, make sure to retry the scan.
      - Added some testing hooks for configuring whether and how often we delete old versions on the server.
      - Removed stuff about configuration cellular access since controls this now.
      - Added support for deleting stale versions of documents, in case they didn't get cleaned up by a prior sync (device put to sleep, connection lost, etc).
      - Added OFFileMotionResult for describing the result of a move or copy in a file coordination safe way.
      - Fix cases where credentials could be discarded if conformance tests failed.
      - Fix a bug where we could interpret network conneciton loss as a conflict.
      - When we get a 'stale' bookmark, we now rearchive the bookmark data.
      - We no longer require the WebDAV server to return ETags since we don't use them.
      - Continued working on encryption support.
      - Added support for writing ICC colorspace data in a external table when archiving colors to plists.
      - Declare +[OAApplication sharedApplication] as returning instancetype.
      - Removed our home-grown support for sheet request queuing as AppKit does this better now.
      - Fix possible infinite loop in target selection search.
      - Added support for displaying/editing/resetting configuration values and handling change URLs.
      - Fix a crash that can happen when clicking on a AppleScript-backed toolbar item after the script has been removed.
      - Fix a crash that can happen when validating toolbar items in a window that is being torn down.
      - Add support for Yosemite-style button toolbar items via a 'hasButton' key in the .toolbar file.
      - Add strings files for crayon color names.
      - Work around crash in the text system where _NSLayoutManagerRulerHelper is asked for -defaultLineHeightForFont: but doesn't respond (19771353)
      - Added more helpers for constructing constraints.
      - Added debug logging support for vibrant views.
      - Updated support for performing blocks before a window is displayed to include per-window support.
      - Improved font matching in OAFontDescriptor.
      - Improved performance of OAResizingTitleBarButton.
      - Fixed rare crash when closing the window for a OAWebPageViewer. Improved scrolling performance.
      - Avoid doing work while windows are closing that could poke zombies.
      - Updates for Yosemite look and feel.
      - OpenGL has a bug where sometimes instantating a context on a background queue would crash. We'd been getting a small but steady number of these across our apps. So now, we do the anonymous hardware details collection and software update query in a background XPC service.
      - Removed use of some deprecated SMJob functions that we used in our priviledge install helper (for when the updating app isn't writable by the current user). We now write a new version of our helper tool in the (rare) case that the XPC protocol changes rather than trying to remove the old one when a downgrade would have been necessary.
      - Switched to storing user-wide settings for software update into a group container preference domain instead of requiring a special entitlement for the share preference domain.
      - Added a new version of the OpenGL extension compaction encoding that better reflects the set of extensions commonly available today.
      - Apply extension compaction to the OpenCL extensions.
      - Added support for custom queyr keys in reports.
      - Build the the HTML in code for the description of what info will be reported. This allows for localization of individual pieces more naturally.
      - Stop using NSDate for run-time calculation, using clock_get_time() instead (since the latter doesn't increment while the machine is asleep and doesn't change when ntp changes the system time).
      - Improved user confirmation support for sending OSU stats on iOS.
      - Fixed the split view style when showing updates.
      - Fixed escape/cmd-period in the updates window.
      - Updated preference pane icons for Yosemite.
      - Clean up of file presenter code in OUIAppearance
      - Add support for NSImage-typed properties, with the image based on a name, bundle name, and tint color string/dictionary.
      - Add support for UIImage-typed properties, with similar options.
      - Add support for explicitly float- or double-typed properties (CGFloat will duplicate one of these based on architecture). NSTimeInterval support added by virtue of explicit support for double.
      - Added/updated appearance values.
      - More updates for adaptability.
      - Allow for configuration of whether help should be displayed on first launch.
      - Updated icons.
      - Updated document preview sizes for compact layouts.
      - Updated document preview support to work in terms of OFFileEdits; fixes spurious preview regeneration in some cases.
      - Many more updates for adaptability and compact layouts.
      - Many updates for adaptability and compact layouts.
      - Support for configuration change URLs.
      - Updates for IAP upgrade pricing options.
      - Disable pkzip encryption, which we don't use.
      - Set VERSIONMADEBY to 0x300 across the whole project.
Commits on Oct 21, 2014
  1. @tjw

    Updated with changes from OmniGroup svn [r217626:220067]

    tjw authored
    - Lots more deprecation fixes for APIs that were soft deprecated in the past, but no one noticed... Still plenty of deprecation warnings to fix on the Mac side.
    - Removed 'Rez' build phases and updated projects to Xcode 6.1.
    - More progress on converting iOS static library targets to frameworks. Plenty more to do.
    - Fixed various issues with attempting to turn on ObjC modules. Sadly, builds with modules enabled are slower than using prefix headers. Didn't add the modulemap files since we didn't turn on modules after all.
    - Updated/added localized string files
    - Added @3x images for iOS and some @2x images for Mac
    - Added +protocols debugging method
    - Added OFByteProviderProtocol
    - Added OFASN1Utilities
    - Fixed registration of the crash-on-unhandled-exception preference
    - Require 10.10 in our runtime checks
    - Improved parsing of dates in more locales with OFRelativeDateParser and fall back to US formats (so 'today' will always work). Extended tests to cover these cases.
    - Added NSFileManager wrappers for setting the NSURLIsExcludedFromBackupKey key
    - Removed old code that attempted to display uncaught exceptions and keep limping on. In an autosave world, we prefer to get a crash report so we can fix it.
    - Improved font matching in OAFontDescriptor
    - Avoid crashes in WebKit under Yosemite due to non-retained backpointer being kept alive
    - Automatically retry some operations when we get kCFErrorDomainCFNetwork/kCFURLErrorNetworkConnectionLost. Yosemite seems to have a bug with reusing SSL connections when the server has closed the remote socket. But, we've not been able to track down a standalone test case.
    - Remove finished NSURLConnections in ODAVConnections when they are done
    - Incorporate changes from more recent OmniFocus branches
    - Added experimental/prototype support for encryption. More work needed before this should be used.
    - Set sample documents to be not backed up until the first time they are edited.
    - More work on adaptable interfaces
    - Add support for OFByteAcceptor/OFByteProvider
Commits on Sep 12, 2014
  1. @tjw
Commits on Sep 10, 2014
  1. @tjw

    Missed a comma.

    tjw authored
  2. @tjw
  3. @tjw

    Updated with changes from OmniGroup svn [r209919:r217626]

    tjw authored
    - Lots of deprecation fixes for APIs that were soft deprecated in the past, but no one noticed... Still plenty of deprecation warnings to fix on the Mac side.
    - Started taking advantage of iOS frameworks, but since Xcode has no migration path, this is slow going.
    - Converted unit tests to XCTest
    - Removed references to NSZone
    - Removed -[NSObject(OFExtensions) bundle]; use bundleForClass: or bundleWithIdentifier: at call sites
    - Various localized string file updates
    - Added configurations for iOS bundles (for app extensions) and frameworks.
    - Require iOS 8.0 and Mac OS X 10.10
    - Enable a few more warnings across the whole code base
    - Temporarily make deprecation, unreachable code, and undeclared selector warnings not errors so we can address them w/o blocking builds
    - Added --skip-fix-strings-files argument to CopyLibraryResources
    - Updated Scripts/rubylib/xcodeproj.rb to be a little more class-y, a little less Hash-y. Updated calling scripts
    - Added experimental code to OBExpectedDeallocation find references to the leaked instances. This helps paper over the mess created by ARC inserting tons of extra retains/releases and Instruments Leaks event matching being so poorly done.
    - Whitelist some more bad system API in OBRuntimeCheck.
    - Remove GC-only helper functions
    - Add some ARC helpers that wrap ObjC API that is disallowed when -fobjc-arc is enabled
    - Add some more objc_msgSend wrapper functions (OBCallObjectReturnIMPWithObject, etc.)
    - Updated to be ARC friendly, but the extra ref counts added by ARC make low level code more of a performance issue, so this framework isn't converted to ARC.
    - Replaced OFLockRegion_Begin/OFLockRegion_End with OFWithLock(), taking a block.
    - OFNetStateRegistration now keeps track of whether it is invalidate and doesn't assert that the timer firing it its timer (which will have been nilled out).
    - Added OFNetStateMock.[hm] which has one-process replacements for OFNetStateRegistration and OFNetStateNotifier. Currently these are used unconditionally in the OmniFileExchange tests, but they should be made conditional (well, you can comment out the registration line to "configure" it).
    - Fix an assertion failure when quickly invalidating OFNetState* classes and setting up new lines (like in the tests). We can get told that services are disappearing that we never heard about their appearance.
    - Rename the 'state' property on OFNetStateRegistration to 'localState' to avoid getting confused with the methods on NSCell, NSButton, and NSMenuItem.
    - Added unit tests for OFMutableKnownKeyDictionary
    - Added unit tests for OFTrie, fixed a long standing bug they exposed
    - Added OFPerformanceMeasurement
    - Add an iOS framework target
    - Removed -afterDelay:performBlock:, replacing it with OFAfterDelayPerformBlock().
    - Enabled bundle support in OFBundleRegistry on iOS now that there are frameworks
    - Added support for 'registration' files that are more easily shared between Mac/iOS and can do all the OFRegistrations stuff instead of just user defaults.
    - Added OFPerformInBackground() which makes a one-shot operation queue
    - Added -[NSIndexSet complementOverRange:] convenience method for finding the relative complement of an index set with respect to a given range.
    - Fix a problem where NSNetService entries would sometimes pass a TXT record data of <00> to OFNetStateNotifier after passing their real data. Possibly a new bug with 10.10, but we've not isolated it yet
    - Fix some -Wshadow warnings
    - Updated iOS strings on preferences view to fit smaller spaces
    - Updated Help support to allow apps to specify the size of the help window
    - Added -[OAController openURL:] funnel point for subclassers to intercept
    - Add a framework target for iOS
    - Added NSWindow -convertPointToScreen: and -convertPointFromScreen: convenience methods
    - Use NSTitlebarAccessoryViewController for the construction-tape view used in our betas instead of injecting it directly into private parts of the view hierarchy
    - Fixed some issues with font lookup in OAFontDescriptor
    - Added helper code to OADocument to disallow saves to the app wrapper
    - Updates for ARC friendliness changes in OmniFoundation
    - More fixes for floating vs. docked inspectors
    - Updates for Yosemite look and feel
    - Add better support for injecting extra strings into the user agent header
    - Fix crash due to race condition in setting up the token delimiter set
    - Updated `odav` command to termindate when async commands are done
    - Add a new ODSFilter initializer that searches all the fileItems of a scope, and rename the top-level-only initializer to be more explicit
    - Updated approach to instantiating documents from templates
    - Fixed a rare-ish race condition in conflict handling where two clients could attempt to rename the same files to different file names, ... resulting in conflicts, repeat. Now, conflict renames are local-only. All clients observing the conflict will rename the user-visible files to indicate the conflict, but the user-intended document name won't be changed on the server until the user manually renames one of the conflicting files.
    - We no longer have a notion of 'shadowed' file while there are name-based conflicts.
    - Name based conflicts no longer rename the server version of the file, and in fact any number of files on the server can stake a claim to the same relative path
    - Instead, we have a new client file state, 'automove': when there is a name conflict, all the conflicting files are assigned new conflict names. Edits can happen to those files and the desired names will not be updated on the server. This avoids the buggy case where one or more observing clients notices the conflict and attempts to resolve it by renaming the files, possibly leading to further conflicts.
    - When a file is renamed by the user, if that name is the original name, the other files have their conflict names finalized as their real names
    - If a file is left as the only automove'd file (the other versions are deleted or renamed away), then it is given back its desired name
    - We now post the last edited user name and host name in the server's Info.plist. If this is present, we use it when generating the conflict file name for that file.
    - Added more tests, including one that provokes the bad case.
    - We no longer attempt to intuit moves by NSFilePresenter notifications, but rather do inode-based match ups.
    - Metadata updates are now deferred and coalesced.
    - We keep track of moves we've noticed while scanning and apply them in bulk so that name swaps are detected by our inode matching
    - In the case of too many errors, we now automatically pause syncing, rather than flooding the server
    - Improved unit tests
    - OFXServerAccount instances can no only be either for document syncing or import/export, not both (can make two account instances if both facilities are desired)
    - Added support for more types of properties on OUIAppearance
    - Added support for user-overrides of appearance values via property lists placed in the right spot (with NSFilePresenter support for dynamically updating them)
    - Cache values computed via dynamic accessors
    - Add support for aliases
    - Add better support for subclasses and splitting up appearance plists
    - Changed OUITextView delegate method -textViewShouldPreserveStylesWhenPasting: to -textViewShouldPreserveStylesWhenPasting:defaultValue:sender:.
    - Add OUIUndoBarButtonItemDelegate protocol with -viewControllerToPresentMenuForUndoBarButtonItem:
    - Add a OUIUndoManagerDidRemoveAllActionsNotification notification and make OUIUndoBarButtonItem observe it to update its state
    - Remove OUIUndoButtonController and use OUIMenuController for the popover
    - Added OUITransition and OUIVerticalSplitTransition.
    - Switched to new Photos API
    - Added OUINoteInspectorPane
    - Cleaned up special/debug URL handling
    - UIAlertController in a bunch of places where UIAlertView was before
    - Updated design for IAP
    - Lots of accessibility improvements
    - Lots of adaptability updates and rearrangement of the document picker views
    - ... lots of other updates for iOS 8
Commits on Sep 9, 2014
  1. @tjw
  2. @tjw

    Remove the old build scripts.

    tjw authored
    Most people are likely using workspaces, so these scripts don't get much testing. If needed they can be resurrected.
Commits on May 19, 2014
  1. @tjw

    Add another empty strings file for the Japanese localization.

    tjw authored
    There were actually two missing strings files. Fixes #85 (for real this time, hopefully).
  2. @tjw

    Add an empty strings file for the Japanese localization.

    tjw authored
    git doesn't support empty directories, so we need a placeholder
    here while we wait for this localization.
    Fixes #85.
  3. @tjw

    Updated with changes from OmniGroup svn [r209919]

    tjw authored
    - Support for replacing shell script build phases for BuildSVNVersionInclude with the Tools/SVNVersion project
    - Project that does the work of the old BuildSVNVersionInclude shell script build phases while working better with project dependencies
    - Fix parsing of Korean dates with formats like '2014. 4. 20.'
    - Restored some date parsing code from OmniFocus 1.x for falling back to English parsing when localized parsing doesn't match
    - Added OFTransientObjectsTracker for tracking objects that are created and destroyed w/in a block of code
    - Fix some implicit narrowing cast warnings
    - Ensure standalone inspector UI is loaded before trying to restore expansion state
    - Add support for automatically checking for updates on the run after a crash
    - Don't offer to mail support for errors we can't help with (disk full, etc).
    - OATrackingLoop now tracks the current event in an ivar and reports it as a read-only property.
    - Fix documentation window width at 800
    - Updated OAStackView to notice when one of its subviews changes size,
      and to apply a constraint to itself when it wants to set its own
    - Lots of improvments to OAWebPageViewer
    - Add some API which lets us disable script toolbar items.
    - Add some helpers on NSView for establishing same-extent constraints between a view and a contained view, or making those constraints and collecting them in an array.
    - Fix first-day-of-week support in OAPopupDatePicker
    - Don't try to produce tinted variants of template images.
    - When requesting data from a website, send a single preferred language
      rather than a complete ordered list of every language installed on the
      user's system (which some websites can't handle).
    - A bit of modernization
    - iOS 7 updates to OUIInspectorOptionWheel
    - OUIImagePickerAssetsViewController updates in response to library changes
    - Reduce the number of undo operations logged for font size changes
    - Add support for customizing appearance via user-supplied custom plists.
    - Add some caching of appearance values
    - Fix signature of blocks passed to imp_implementationWithBlock()
    - Added helper +[UIView(OUIExtensions) topLevelViewFromNibNamed:]
    - Don't try to unique file names when we are saving for overwriting
    - Fix a few other edge cases with switching document UTIs while saving
    - Various updates to strings files.
Commits on Apr 11, 2014
  1. @tjw

    Updated with changes from OmniGroup svn [r207477]

    tjw authored
    - Fixed build issues with Xcode 5.1's version of clang
    - Fixed 64-bit issues for iOS
    - Fixed deprecated API issues for requiring the 10.9 SDK
    - Be more explicit about __autoreleasing in various out-parameter places for compatiblity with '-fobjc-arc-disable-writeback'
    - Enabled GCC_WARN_UNDECLARED_SELECTOR in some projects; will continue to advance to others
    - Require the 10.9 SDK
    - Remove explicit list of architectures for iOS, allowing 64-bit builds
    - Add some more ARC helpers
    - Remove some GC helpers
    - Improve error handling in OFLockFile
    - Add keyed access for OFBijection
    - Started moving away from OFSubjectTargetingScriptCommand.
    - Added a helper for re-evaluating an object specifier with a different container
    - Added more scripting debug helpers
    - Improved ARC friendliness of a bunch of code
    - Added NSString +invalidXMLCharacterSet and +discouragedXMLCharacterSet and deal better with discouraged characters
    - Made OFRandom's shared state thread safe instead of just warning about it
    - Made OFPreference KVO compliant for objectValue
    - Expose support for a reference date in OFRelativeDateParser/OFRelativeDateFormatter
    - Do a better job sending feedback with non mailers
    - Removed the pattern color picker
    - Converted OAAboutPanel to xib
    - Added an action to open the application scripts folder (for sandboxed app's usage)
    - Cleaned up the find API
    - Added NSWindow methods to gather blocks and execute them before windows are displayed
    - OAContextControlDelegate is a formal protocol now
    - Added AXShownMenu and AXShowMenu support
    - +tintedImage:... now returns a self-updating tinted image
    - Removed the ODO_SUPPORT_UNDO setting from ODOFeatures.h since we always have NSUndoManager.
    - Added a test case for a spurious conflict case
    - Converted to ARC
    - More work on support for sidebar inspectors
    - Inspectors are finally NSViewController-based
    - Avoid an exception if we get a nil colorspace
    - Support fill-and-stroke on the vector output path
    - Fixed unrecognized selector exception on significant time changes on iOS
    - Improved handling of app-owned 'special' URLs
    - Restored single-swatch rendering to OUIColorAttributeInspectorWell
    - Add our own image picker rather than trying to shoehorn Apple's into our navigation controller
    - Added OUISegmentedViewController
    - Updated look for OUIInspectorOptionWheel
    - Fix a crasher when duplicating an OmniPresence document w/o a preview while offline
    - Improved import/export support
Commits on Jan 15, 2014
  1. @tjw

    Updated with changes from OmniGroup svn [r201812]

    tjw authored
    Some highlights...
        - Switched from English.lproj to en.lproj
        - Added some localized strings
        - Fixed warnings from newer versions of clang
        - Added OBExpectedDeallocation(). In debug builds, this keeps track of objects that you expect to be deallocate (say your object model when closing a document) and warns if they aren't deallocated in a few seconds. Great for tracking down leak regressions in automated tests.
        - Added OBIsBeingDebugged(), OBStopInDebugger(), OBStepThroughAndVerify()
        - Make +[OBPostLoader _bundleDidLoad:] thread-safe
        - Moved OBInitializeDebugLogLevel and OBInitializeTimeInterval to OmniFoundation.
        - Update OAStackView to support loading a set of subviews from a nib
        - Add support for an app-internal help viewer via OAHelpFolder Info.plist setting
        - Updated ExtendedText.sdef to extend the text suite instead of declaring all of it
        - Added id-based scripting support for NSDocument
        - Added OASubtleScroller
        - Added -imageByTintingWithColor: and -imageByTintingWithColor:alpha:
        - Fixed some issues with remembering the correct font in OAFontDescriptor
        - Updated OAOpenSystemPreferencePane() for sandboxing
        - Improved layout debugging interface
        - Fixed some OATargetSelection issues with toolbar items
        - Added -[NSDocument(OAExtensions) canCloseDocument:] block-based wrapper for -canCloseDocumentWithDelegate:...
        - Added NSScriptCommand(OAExtensions) which ensures autorelease pools don't build while scripting an app in the background
        - Added more runtime debug checks in NSObjectSpecifier(OFFixes)
        - Added NSScriptCommand(OFExtensions) +requireObjectsInArray:toAllHaveSameClassfromClasses:
        - Handle NSScriptObjectSpecifier arguments in -collectFlattenedObjectsFromArguments:requiringClass:arraySpecified:.
        - In our +replacement_sharedScriptSuiteRegistry, only create the new registry once
        - Added NSScripting(OFDebugging) with lots of runtime checks for malformed scripting stuffs
        - Factored out -targetSubject from OFSubjectTargettingScriptCommand and added OFSubjectTargettingDeleteCommand
        - Made OFMutableKnownKeyDictionary use -enumerateKeysAndObjectsUsingBlock: instead of its own function based API. Updated stepwise dictionary pair enumerator to use blocks as well.
        - Added OFNumberFormatter
        - Added OFLogBacktrace()
        - Added OFKeyPathWithClass()
        - Added OFCrashImmediately() and updated support for crashing on unhandled exceptions
        - OFNetReachability now checks for sandbox entitlements it needs in debug builds
        - Added experimental support for inspectors that don't live in floating windows
        - Better fallbacks for unrecognized colors in archiving
        - Support for converting to OQColors to NSAppleEventDescriptors
        - Added sdef for OQColor value types
        - Added framework (just used by the odav test tool in OmniDAV)
        - Fixed authorization right/rule for installer for 10.9
        - Fixed issues when installer helper is missing
        - Factored out a OmniSystemInfo framework that is (hopefully) suitable for MAS and the App Store
        - System info collection no longer forces the discrete GPU to remain on, and we always include OpenGL details again
        - Report the total local filesystem size in the system info, as a proxy for the device size
        - Updated UI for the preference pane, system info report, and privacy prompt
        - OUIAppearance now acts as a KVC base for registered keys and subclasses cascade from their superclass
        - Fixed crash due to Helvetica neue italic font missing in iOS 7.0.3
        - Fixed tapping on attachments
        - Fixed crash typing Japanese text with US hardware keyboard
        - Check for -setTolerance: so we can build on 10.9 and run on 10.8
        - Fixed/improved temporary file cleanup code
        - Fixed some URL parsing issues
        - Fixed issues with gzip content encoding
        - Added Safari 7.0 to the list of spoofable browser identities.
        - Updated OmniWeb's default browser identity to be based on the
          Safari 7.0 identity.
        - Deal with both 307 and 308 redirects
Commits on Sep 27, 2013
  1. @tjw

    Updated with changes from OmniGroup svn [r195828]

    tjw authored
    - Fixed OBRegisterInstanceMethodWithSelector
    - Removed old hack to pre-load the AppleScript dictionary
    - Removed some pixel snapping methods that used deprecated API
    - Added a periodic cleanup of files in the server accounts 'tmp' directory. This should only be needed in error conditions, but we have noticed some users with cruft building up there.
    - Include a 404 error in the underlying error chain when account validation fails due to a 404 (wrong user name for OmniSyncServer accounts, or wrong path for DAV accounts).
    - When conflict resolution hits a race condition in renaming, fall back to a guaranteed unique name (which is uglier but works).
    - Add a hook for a custom subclass of NSScriptSuiteRegistry
    - Report symbolic backtraces in exceptions with API common to iOS and Mac
    - When an NSNetServices finishes resolving, OFNetStateNotifier will now update its state
    - Stop catching and loggings exceptions in some places; in this autosave world, moving towards exception=death is nicer
    - Use non-deprecated drawing API
    - Ensure text editing is finished when closing a document
    - Better support for demo builds
    - Fix outError handling when cleaning up Inbox items
    - Split the "Move" action options into their own top-level toolbar item
    - Allow making new folders containing a single file
    - Fix handling of pasted RTF that contains references to dyanmic type or interface fonts.
    - Replaced OUIEditableDataDetectingTextView with OUINoteTextView
    - In OUITextView, avoid capturing move up/down/left/right while there is marked text. The input method should take those.
Commits on Sep 18, 2013
  1. @tjw
  2. @tjw

    Ignore xccheckout files.

    tjw authored
  3. @tjw

    Fix some build issues with the OmniFrameworks workspace and remaining…

    tjw authored
    … objc_msgSend calls in OWF.
  4. @tjw

    Updates to build requirements.

    tjw authored
  5. @tjw

    - New document picker with folders, nice support for OmniPresence sco…

    tjw authored
    …pes/trash, iOS 7 look and animations
    - Background syncing support for OmniPresence
    - Updated inspector widgets for iOS 7
    - Removed a bunch of code no longer needed in iOS 7 (plenty more left
    that can be cleaned up)
    - Removed CoreText-based editor and RTF import/export in favor of
    - Converted a bunch more code to ARC
    - Lots of cleanup for 64-bit iOS, isa references, BOOL conversion,
    IMP/objc_msgSend calls w/o casts, iOS 7 deprecations
    - Clean up of deprecated nib loading API usage
    - Split out a OmniDAV framework from OmniFileStore with async-only API
    - Split out OmniDocumentStore from OmniFileStore for iOS only document
    store support
    - Lots more...
Commits on Jun 18, 2013
  1. @tjw

    Updated with latest OmniGroup source.

    tjw authored
    This will likely be the last merge for a while...
      - Cleanup some references to deprecated API
      - Some fixes and cleanup for OmniFileExchange document syncing
      - Fix some errors noticed by newer developer tools
      - Added helpers for configuration-specific builds (allowing vs. running side-by-side)
      - xcodeproj.rb now uses the Plist gem rather than OSX::Cocoa
      - BuildStringsFromTarget no longer marks output as updated if there is an error
      - Include NSURLErrorNetworkConnectionLost in -causedByUnreachableHost
      - Remove (now) unused OFResourceFork
      - Removed categories used to look up stationery bit
      - Added block-based sorting helpers
      - Added OFBijection
      - Extended OFLockFile with OFLockUnavailableHandler and OFLockFileLockOperationOptions
      - OFLockFile now ignores zombie processes
      - Updated credentials API to return errors
      - Avoid issues due to Radar 14075101: UIApplicationDidEnterBackgroundNotification sent twice if app with background activity is killed from Springboard
      - Warn if OFNetStateRegistration in a sandboxed app without
      - Avoid capture of the delayed update timer when invalidating a OFNetStateRegistration instance
      - Copy more ivars in -[OFRelativeDateFormatter copyWithZone:]
      - Avoid wrapping errors needlessly.
      - Fix issue with Mac OS X Server's WebDAV handling of paths containing spaces hiding MOVE/COPY handling of Destination headers
      - Removed obsolete OWXMLURLFileProcessor
      - Removed other references to OFResourceFork
      - Switched to standard behavior for stationery files.
      - Improved OAFontDescriptor matching
      - OATrackingLoop now updates its modifierFlags property for all events, not just FlagsChanged events
      - OAPopupDatePicker can pick a date without requiring a binding to its presenting control
      - Started writing tests for files with invalid UTF-8 paths; logged a couple Radars vs. NSURL...
      - Add another workaround for flat-file file presenter notifications
      - Attempt to work around crashes in the Security framework (13860984) by looking up credentials on the main queue
      - Allow OmniPresence accounts to also be import/export accounts
      - Fix some assertions in unit tests
      - Fix some leaks of temporary files
      - Fix spurious conflict possible when downloading a rename-only change
      - Add better progress reporting during server conformance testing
      - Avoid crash in a case where a remote snapshot is missing an Info.plist
      - Fix failures replacing directory with flat file in WebDAV import/export
      - Fix localization of some strings
      - Add menu image for restoring default documents
      - Better layout for name/date sorting document picker control
      - UX improvements for Trash
      - Support for suspending launch actions (for the benefit of integrated crash reporting)
      - Track foregrounded status ourselves to avoid issue with backgrounding while launch actions are suspended and Radar 14075101
      - Improvements for running with UIUserInterfaceIdiomPhone
      - Fixed cancel action in OUIActionSheet
      - Deprecated -modalParentViewController in favor of -presentingViewController
Commits on Jun 9, 2013
  1. @lithium3141

    Minor changes in the README

    lithium3141 authored
    * Update our current Xcode version
    * Combine the `git submodule` init & update
    * Style "Auto Layout" properly
    * Be consistent about punctuation
    Signed-off-by: Tim Ekl <>
Commits on May 24, 2013
  1. @tjw

    Switched to a 10.8 deployment target on Mac OS X

    tjw authored
    	- Removed a bunch of code for old operating systems
    	- Marked several places that still need attention with `#pragma clang diagnostic ignored "-Wdeprecated-declarations"`
    	- Added -isFileInTrashAtURL:
    	- Removed -stringByReplacingAllOccurrencesOfString:withString: -- NSString has -stringByReplacingOccurrencesOfString:withString:
    	- Added -[NSEvent isUserCancel]
    	- Fixed bundle extension of ONUnitTests so Xcode would run them
    	- Removed reporting of the "loc" key (user's general location set via System Preferences). ReadLocation() is deprecated and getting the user's general location isn't worth asking for location entitlements.
    	- Added -viewInAppStore:
Commits on May 22, 2013
  1. @tjw

    OmniPresence support in OmniFileExchange and lots more.

    tjw authored
    - The frameworks have only been tested on Mac OS X 10.8.3 and iOS 6.1. We have not yet set the deployment target to 10.8, but will in the near future.
    - Worked around cases of the ARC writeback misfeature <>
      - Lots more explicit '__autoreleases' scattered around to make things build with our '-fobjc-arc-disable-writeback' patch
    A few highlights:
    - Better support for static library framework-like targets on Mac OS X
    - Added some convenience methods for logging errors and suppressing logging thereof (for unit tests expecting errors)
    - Switch to using SecTrust exception data in OFCredential support for certificate trust checks
      - On the Mac, it is expected that you'll use the system provided certificate sheet to make permanent changes
    - Added OFLockFile.
    - ARC-ify a few more files
    - Fixed thread-unsafety in parsing ICS/ISO-8601 dates due to use of thread-unsafe CF API
    - Coalesce updates to OFNetStateRegistations to avoid complaining from mDNSResponder
    - Added NSFileCoordinator helper wrappers
    - Added document syncing support used in OmniPresence and our iPad apps.
    - Added regression tests for document syncing
    - Add support for turning off transfers on cellular networks
    - Disabled ETag support in DAV conformance testing. No DAV server we've found actually conforms to WebDAV, and ETags are ill defined, so we stopped using them.
    - Handle multistatus responses from MOVE/COPY
    - Added a notion of a 'Trash' document scope on iOS. Deleted files get moved there.
      - On the Mac, deleted files get moved into the user's normal trash.
    - Avoid spinning up the discrete GPU
    - Fixed zombie when installing updates in some cases
    - More faithfully reproduce the responder chain search for OATargetSelection
    - Move Message of the Day support here from OmniSoftwareUpdate
    - Much improved support for font matching in OAFontDescriptor. Added unit tests.
    - Document syncing support via OmniFileExchange
    - Cleaned up a few glitches in the sample app
Commits on Mar 22, 2013
  1. @tjw
  2. @tjw

    Updated notes.

    tjw authored
  3. @tjw

    Merged changes to OmniGroup svn r181795

    tjw authored
        - Lots of work for sandboxing
        - Fix a bunch of default-atomic property declarations to be explicitly nonatomic.
        - Our configurations will specify a deployment target of 10.7, but much of the framework code is starting to require 10.8 (either implicitly for auto-layout/layer backing fixes or explicitly via use of NSXPCConnection)
        - Use @rpath for Debug configurations, not just Release
        - Codesign command line tools by default
        - Added some error logging/suppression helpers that are useful in tests
        - Switched to ARC
        - Added a OB_REQUIRE_ARC macro to help make it explicit that a file requires ARC.
        - Removed OFRegularExpression in favor of NSRegularExpression. OFRegularExpressionMatch remains but is based on NSRegularExpression.
        - Added -effectiveCodeSigningEntitlements:
        - Added NSFileCoordinator(OFExtensions), which works around bugs in NSFileCoordinator when doing case-only renames
        - OBBTree only supports block-based enumeration now and uses ARC
        - OFFilePresenterEdits no longer deals in file modification dates
        - OFNetStateNotifier now coalesces updates made w/in two seconds to avoid mDNSResponder throttling
        - OFNetStateNotifier now includes a 'version' in its TXT record so that a quick change between states A -> B -> A will still be remotely observed
        - Fixed AppleScript support for preferences
        - Added OFSyncClient, based on the client files for OmniFocus (and soon to be used by OmniPresence).
        - Add support for detecting if we are sandboxed by inheriting a sandbox profile
        - Avoid creating a dedicated thread scheduler when it isn't going to be used
        - Converted OAFindPanel to xib format, made it a NSWindowController, and updated for NSRegularExpression
        - Avoid creating a method thread scheduler and queue processor if not needed
        - Added some workarounds for toolbars in windows using auto-layout
        - Added plist unarchiving support for 'natural' color ranges when using spelled-out component names (so "r" is [0..1] while "red" is [0, 255])
        - Added a fix for 13415520: -[NSView addSubview:positioned:relativeTo:] inserts sublayers in wrong position
        - More fixes for OAOpaqueTextField since NSTextField still doesn't handle drawing w/o an opaque background
        - Added support for tracking the last error on an account
        - Added support for cloud accounts vs import/export accounts (which require less WebDAV support)
        - Added more WebDAV conformance checks:
            - testCollectionCopyFailingDueToETagPrecondition:
            - testCollectionCopySucceedingWithETagPrecondition:
        - Added ETag-predicated COPY support.
        - Added OFSURLEqualsURL() to work around NSURL failing to obey RFC 3986.
        - Add support for asserting when NSURL -hash or -isEqual: is called (off by default).
        - Use the Location header in the result of a MOVE or COPY and pass that to the result block for MOVE/COPY.
        - Remove some explicit calls to -cancelAuthenticationChallenge:. These can deadlock when using the NSOperationQueue API on NSURLConnection.
        - Move OFSDocumentInbox to OmniUI so that OmniFileStore no longer depends on OmniUnzip
        - Updated document move support
        - OFSDocumentStoreFileItem is no longer a file presenter. Instead its owner is, OFSDocumentStoreLocalDirectoryScope
        - Be more explicit about user vs. filesystem modification dates in property names
        - Fix assumptions in a few places in the document store that files exist. For local scopes they do, but for synchronized scopes, they might not be downloaded yet
        - Various cleanup of move and delete code.
        - Added -[OFSFileInfo isSameAsFileInfo:asOfServerDate:] to work around ETag lameness
        - Added support for downloading and installing software updates of sandboxed applications
        - OSUInstallerPrivilegedHelper/Info.plist and OSUInstallerService/Info.plist need to be updated if anyone other than OmniGroup will be using them (to fix the SMPrivilegedExecutables key for your developer identity).
        - Add support for adding import/export server accounts
        - Fixed assumptions in preview generation that files exists. We might be asked for a placeholder preview of a synchronized file that isn't downloaded yet.
        - Fixed WebDAV import/export of file wrappers
Commits on Feb 6, 2013
  1. @tjw

    Note Xcode 4.6 usage.

    tjw authored
  2. @tjw

    Merged changes to OmniGroup svn r179468.

    tjw authored
      - NOTE: Some of this code is not shippable yet (particularly the document picker/store).
      - Builds with Xcode 4.6 with very few clang-sa warnings (remaining warnings might be clang bugs, but haven't narrowed them down to clear test cases yet)
      - Requires iOS 6 and Mac OS X 10.7
      - Removed iCloud support. Added OmniFileExchange framework, which is where the OmniPresence bits will be later (but not adding those yet).
    Other highlights:
      - Sorted warning options in the same order as Xcode 4.6 lists them
      - Enabled a few more warnings
      - Require iOS 6
      - Removed some settings that Xcode 4.6 notes as deprecated.
      - BuildSVNVersionInclude avoids a rebuild when it can. Added support for svn 1.7.
      - BuildStringsFromTarget avoids a rebuild when it can.
      - CopyLibraryResources
        - Added an --exclude option for skipping resources that the running app doesn't need
        - Add support for DEVELOPER_USR_DIR containing spaces
      - Fixed support for including backtraces in NSError userInfo dictionaries.
      - Added NSString-formatting attributes where appropriate.
      - Fixed some uses of objc_msgSend as function pointers, added utility functions for common cases (for example, OBCallVoidIMP).
      - More ARC support macros.
      - Added OB_HIDDEN for replacing __private_extern__ and OB_VISIBLE for cases where a symbol should be explicitly visible.
      - Added OBStrong{Retain,Release} for cases were you really need an object to stick around in ARC mode
      - Added OBInitializeDebugLogLevel helper for supporting getenv/NSUserDefaults style debug levels
      - Updated assertion macros to take a reason format and __VA_ARGS__.
      - Moved some AppleScript helpers here from OmniOutliner/OmniFocus.
      - Various cleanup of public headers to support being imported in ARC-aware code.
      - Updated some files to be compiled with ARC, but most is still not.
      - Moved OFWeakRetain into OWF.
      - Added a OFWeakReference class for passing around or keeping lists of weak references.
      - OFController now uses ARC for observers via a new OFWeakReference class.
      - Fixed OFFastMutableData. 10.8 changed NSObject so that you can't keep a free list of objects via -dealloc.
      - Add OFOffsetMutableArray
      - Switched to build-time strings file generation via BuildStringsFromTarget.
      - Moved Keychain wrappers to this framework and updated the API some. Still more to do for certificate trust.
      - Added -[OFController shouldLogException:mask:] to allow OAController to filter out internal exceptions from Accessibility.
      - Added OFFilePresenterEdits, which helps deal with some of the oddities of NSFilePresenter notifications
      - Added OFHTTPHeaderDictionary, extracted from OWF
      - Added OFHTTPState and OFHTTPStateMachine, used to manage a graph of HTTP operations by transitions via HTTP status code
      - Added OFNetStateNotifier and OFNetStateRegistration, a pair of classes used to communicate availability of state changes across a group of members
        - The API here isn't final, but this the means by which OmniPresence clients notice edits on other devices and sync to pick them up
      - Removed OFImplementationHolder. Use blocks.
      - Added various new unit tests
      - Extracted the guts of OFSDAVFileManager into OFSDAVConnection, which is fully async.
      - OFSDAVOperation now only uses the NSURLConnection operation queue scheduling and has no 'run' synchronously support
      - OFSFileManagerAsynchronousOperationTarget is gone, replaced by blocks that can be set on the operation
      - Updated OFSDAVFileManager's synchronous wrapper around OFSDAVConnection to not pump the runloop
      - Added basic support for LOCK/UNLOCK
      - Added support for ETag, lock token and missing predication in various cases
      - Added basic tests of WebDAV conformance, runnable at unit test time and server account validation time
      - Added a script to test up a local Apache test server
      - Made OFSDocumentStoreScope its own class instead of being an idea in OFSDocumentStore
      - Removed iCloud support.
      - Removed global file uniquification (in the style that iWork does).
      - NOTE: Some actions on the document store used to support the document picker aren't yet ported to the new API
      - New framework. This currently just maintains a registry of accounts.
      - Split out all the document support into a new OmniUIDocument library
      - Added a first pass of accessibility support. Still plenty more to do, but this is a big step forward.
      - Lots of little UI/bug fixes to inspectors
      - All the document based stuff lives here now, building in ARC mode
      - Reworked UI for maintaining cloud accounts. Still in progress.
      - Much better support for huge document sets w.r.t loading/managing previews
      - Support for document filters in the main document picker toolbar
      - NOTE: WebDAV-based import/export in the OmniUI document picker is currently broken
      - OAInternetConfig asserts we have proper sandbox entitlements to send feedback mail
      - Added debugging helper for visualizing constraints on a view (see OAViewPicker and -visualizeConstraintsForPickedView:)
      - Fixed some issues with target selection vs. Powerbox.
      - Updated for OFWeakRetain going away
      - Updated toolbar item script support for sandboxing
      - Added OATrackingLoop, a block-based object to do mouse tracking.
      - Added Retina images.
      - Switched to build-time strings file generation via BuildStringsFromTarget.
      - Removed OAImageManager.
      - Switched to build-time strings file generation via BuildStringsFromTarget.
      - Updated to allow images to be pulled from the owning app
      - Added support for enabled bindings
      - Updated for Retina
      - Updated to allow an empty list of inspectors
      - Improved vector rendering of layers
      - Switched to build-time strings file generation via BuildStringsFromTarget.
      - Retina support
      - Updated support for a button to take you to a web page
      - Moved OWFWeakRetain here from OmniFoundation (which will prefer ARC __weak in the future)
      - Moved much of OWHeaderDictionary to OmniFoundation as OFHTTPHeaderDictionary
      - Ported more code to 64-bit
      - Rewrote a bunch of OWSGML* to use blocks instead of OFImplementationHolder, which has been removed
      - Updated for new location of OWFWeakRetain stuff
Commits on Sep 24, 2012
  1. @tjw
Commits on Aug 19, 2012
  1. @tjw

    Merge pull request #59 from jjbohn/patch-1

    tjw authored
    Update cloning instructions
  2. @jjbohn

    Update cloning instructions

    jjbohn authored
    The instructions were showing up all on one line on github. This fixes it and makes the clone shell commands match the other shell instructions below.
Commits on Jul 4, 2012
  1. @tjw
  2. @tjw

    Switch to the read-only git: URL for the submodule.

    tjw authored
    Git isn't smart enough to down-propagate r/w or r/o from the master project.
  3. @tjw
  4. @tjw

    iCloud fixes, inspector UI refresh and various other bits

    tjw authored
    * Fixed warnings emitted by newer Xcode builds.
    * Documents now more reliably get closed, with the user getting punted back to the document picker, when the conflict sheet appears
    * Fix animation glitch in document picker when replacing files.
    * Fix suspending of user interaction when tapping on a file item while another file item was building a preview
    * Updated the look of the inspectors to be a little more flat, blend with table views better, and be more flexible in terms of height
    * Added a common superclass for table view based inspectors
    * OUIActionInspectorSlice subclasses can now control their +textWellBackgroundType and +textWellControlEvents
    * Better support for doing a selectAll: when starting editing in OUIInspectorTextWell
    * Added a block based helper OUIInspectorWellDraw()
    * OUIDetailInspectorSlice now uses a UITableView and allows for multiple rows
    * Added OUIInspector.alwaysShowToolbar to keep the toolbar up so animations aren't ugly when transitioning between panes that do/don't have toolbar items
    * Added a OUIInspectorTextWell.returnKeyType property so you can customize a text well to use a different return key label (such as "Next" or "Done")
    * Persist credentials for the entire session to avoid extra HTTP requests
    * Handle missing implementation of optional -availableExportTypesForFileItem:withSyncType:exportOptionsType:
    * Removed iDisk options for file import/export
    * Don't update the change count on documents whose state includes UIDocumentStateClosed.
    * Improved interaction of text selection thumbs and context menus
    * Added -[UIView(OUIExtensions) containingViewMatching:] taking a predicate block
    * Allow the user to accept invalid certificates when connecting to servers
    * We now ignore events while the keyboard is animating. The keyboard is immediately in place after the 'will' as far as hit testing goes, so the second tap can actually hit it before it is done animating to that spot.
    * Document previews now build top-left to bottom-right instead of backwards.
    * Updated for possible crash due to regression in newer operating systems...
    * Added NSAnimationContext(OAExtensions) with support for multi-stage animations, similar to OmniUI
    * Removed old -[NSAttributedString(OAExtensions) substringWithEllipsisToWidth:]
    * Made -[NSBezierPath(OAExtensions) segmentHitByPoint:position:padding:] public
    * Added support for decimal tab stops in OAParagraphStyle.
    * Added -[OATextStorage containsAttribute:] convenience method
    * Removed OAAquaButton
    * Avoid spurious warnings on redirects
    * Record and report eTags in PROPFIND operations
    * Fix invalidation of deleted file items
    * When automatically downloading small iCloud files, only do one at a time and prefer those that are currently visible in the document picker
    * Allow customizing export file names
    * OFSFileManager calls async blocks on the current operation queue
    * Add 'mv' command support to the 'ofs' command line tool
    * Make localized strings for time spans public via new API on OFTimeSpanFormatter
    * Fix some ARC compatibility issues with OFBindingPoint.h
    * Added a first pass of compile time checks for key path validity to OFBinding
    * Removed OFCopyObject; we no longer use it and it is bogus in ARC
    * Move declarations of defaults used by OFCompletionMatch into OmniFoundation instead of apps having to define them
    * Add some codesign info lookup helpers
    * Add a block-based -afterDelay:performBlock:
    * Switched +abbreviatedStringForBytes: to use powers of 1000 instead of 1024.
    * Fixed missing pointer update when copying an OFRandomState().
    * Use NSImageCell to draw some images to deal with templates.
    * Add support for logging each layer that is drawn and how ling it took for very basic detection of which types of layers are getting drawn too often or with too expensive contents
    * Added -sublayersNamed:
    * Added -[NSView setPatternColorReferencePoint:]
    * Added OQMakeColor() and OQColorsEqual() with __attribute__((overloadable)) for all our color structs
    * Added more generic rounded rect support that can turn on/off any corner
    * Make the explanotext more accurate when the check failed, or there are downgrade items, or etc.
    * Distinguish downgrade items even more by titling them "Downgrade: "
    * Try to deal with the lack of an italic version of the control content font by using NSObliquenessAttributeName
    * Fixed key-view loop on update panel
Something went wrong with that request. Please try again.