Move instance variables to implementation
Make code safe against ‘nil’ clipboard entries

Should never happen in practice though.
Improve locating Find framework resources

The FFWindowController class is an implementation detail where the Find class is the public class, so depending on the latter should make the code safe against potential rewrites.
Allow passing a window to OakSetupApplicationWithView

Should rename the function to reflect this new flexibility.
Move instance data to implementation
Improve caching of SCM shared info

When requesting SCM info for a path, we now always return the cached info for the first parent of the path, but if the first parent of the path is not the direct parent, we do a more thorough search (which involve disk access) in a background thread.

The latter is required because we may have nested repositories. E.g. asking for SCM info for /path/to/project/submodule/file will initially return the root project’s cached SCM info (if the submodule info hasn’t yet been added to the cache) but will then later invoke the callback with the submodule’s SCM info.
Rework file browser directory source

We now use the new SCM callback and in general things are much simpler, cleaner, and probably faster.
SCM API: Update OakFileIconImage

Since the created image is a “dumb” object that can’t provoke redrawing itself, we require that SCM info is already cached for the repository containing the file for which we are creating an image. If not, there will be no SCM badge, so most users of this API should setup their own SCM info and recreate the image when SCM status changes.
Missing files still get SCM badge
Remove public initializer

This is only to ensure everyone goes through the class method, which is easier to search for (constructing an FSItem from a URL is a little expensive so we wish to get rid of it where possible).
Show non-existing paths with SCM status

This means deleted files which haven’t yet been committed show up in the file browser.
Checkin release notes
Don't mutate shared themes
Retain shared info during async SCM update

Fixes #752.
Use correct syntax for including local headers
Disable SCM badges for non-local paths

Also disable it for user’s home folder and root of file system — having to monitor these folders is too expensive.
Only check for bundle updates every 4th hour

This should decrease my AWS bill with $4-5/month :)
Checkin release notes
Only access SCM info when available

Fixes #756.
Update database of contributor email hashes