Disable Go → Project Folder when unavailable
Add (unused) code to prune tab bar
Insignificant source file touchup
Provide fallback search folder for non-project windows
Checkin release notes
Remove tmCommand load/save converters
fixup! Make HTML output window a panel
Only let DocumentController schedule session saves
Remove need for explicitly calling ‘monitor_controller’

Instead we register the class (causing a retain) when setting the object’s identifier (to a non-nil value).

This is a much better design as it (again) makes it safe to just instantiate a document controller w/o going through a special factory method. Additionally it makes it safe to change the identifier of an already created (and registered) instance.
Use Objective-C types in session read/write code

With the new compiler support for property list types it might be time to phase out the plist_t C++ wrapper.
Remove procedural API for load/save of session

Since everything about session is now contained in the DocumentController class there is no need for invoking this from elsewhere and thus no need for the previous indirection.
Handle app termination in class method

It didn’t really make sense as an instance method since it iterate all instances, and we also want to execute code incase of no instances (save that fact as session data).
Iterate controllers instead of all window delegates
Use proper (specialized) type instead of ‘id’
Remove unnecessary stuff

This includes the OakFilterWindow factory method as ‘new’ is just as good (now that ARC automatically autoreleases).
Fix missing removeObserver:forKeyPath:
Introduce ui_proxy_t::show_browser
Ensure we have a document in showWindow:

Also move (back) to using DocumentController instead of document::show().
Simplify document open API

Removed the ability to specify wether documents should open in current window or a new window — all documents opened via this API will go through the same algorithm to find where the documents should end up (more choice is just adding confusion and complexity).
Improve how we find window for new documents

We first search for a window containing one of the documents we wish to open, then for the window with a best match for project folder (for any of our documents), then check if frontmost window is a scratch window, and if none of the above gives a candidate, we create a new window (and give it a project folder based on the document(s) we opened).