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
Introduce path::is_child(child, parent)

This also returns true when ‘child == parent’ so perhaps a better name should be chosen for this function.
Fix infinite loop for documents outside project folder

Fixes issue #557 (part two).
Use proper cursor image for output view right of text

Fixes #763.
File browser: Dispose all children on collapse

Previously we kept the children which had been expanded, as these had an associated record for tracking file system changes and SCM info.

However, when expanding we weren’t actually re-using the item from the cached record, so not only was this wasteful, but it caused a problem because we effectively created a new item but used the old record with the old item, and while the two items would compare is equal when using isEqualTo:, they didn’t have the same memory address, so the outline view would not consider them equal, and would thus not react on reload requests when using the older item.
Add memory address to FSItem description

Since table views use the memory address, and these items are for use in table views, it’s useful to see the address when printing an item.
Reload updated folders on reactivation

This is done by stat’ing all visible folders and is a fallback for when fs-events is not working (e.g. network file systems).
Move instance data to implementation file
Checkin release notes
Directly read a few instance variables

This is instead of going through ‘self’ and was done to harmonize the code. Since two of the three variables are C++ types we cannot use dot syntax (self.property) when we wish to call a member function on the result, but using [self property] is ugly and would require us to then also use [self setProperty:value] (for consistency), hence why I went with direct access.

Since the selectedTabIndex property is closely related to documents and selectedDocument, I applied the same changes to this property.
Ensure all methods can handle a missing document

This fixes a crash bug when menu validation is invoked before the controller has set up a document. Hardening the other methods is just a precaution (as we generally shouldn’t make assumptions about the state of public properties.
Ensure ‘self’ is kept retained

This shouldn’t be necessary, as we have a ‘retainedSelf’ instance variable that isn’t cleared until ‘[self.window close]’ (the last line of the accept: method), nonetheless I am seeing (rare) crashes from this method, and it appears to be reading the ‘self.window’ property in the last line, so adding this extra safety and will monitor crash reports.
Remove all but the default bundle index

The other bundle sources have been merged into the default index.