Handle targets with no dependencies

These would not be added to the dependency graph and thus no build instructions were generated for them.
Indicate cell prefersTrackingUntilMouseUp

Not really sure if there is any difference, but at least with this, the table view should expect trackMouse:inRect:ofView:untilMouseUp: to run a local event loop (until NSLeftMouseUp).
Introduce path::cache

This gives the cache location — this one is not cleaned as often as the temp directory.
Download s/w updates to cache folder

This should hopefully solve the issue with the (on some systems) fairly aggressive temp cleaner.

Also remove the archive incase the user cancels the update, now that we are extracting it to a less temporary location.
Remove the projectDirectory setting

As I add sub-projects (like the CommitWindow) under Applications, I don’t want those to pickup the parent project’s root, when they are opened on their own.
Change how we update TextMate.app

We now keep the root folder and instead replace the inner Contents folder — hopefully this way LaunchServices won’t add the update as a new entry (causing duplicates to show up in the Open With menu).
Minor tweak to file chooser UI
Checkin release notes
Only build ‘bl’ if not already built

Also ensure the tbz archive is created atomically.
When recreating build file, don’t expand APP_REVISION

This is just to make “bumping” the revision safer. Previously the revision number would be two places in the generated build file, and both needed to be bumped. Now there is only one instance. Generally the revision is bumped with ‘ninja bump’ so the user shouldn’t care about it, but sometimes manual intervention is required.
Introduce ‘after_bump’ build target

This target is solely intended for other targets to depend on, and will cause the dependents to be rebuilt after the APP_REVISION has been increased.

For example ‘Contributions.md’ technically depend on commit history (and online lookups), but in practice we can’t specify this in its dependencies, so previously we had to manually touch the file, if we wanted the HTML to be regenerated.

Now we can have it done automatically after each ‘bump’ by adding this rule:

    build path/to/Contributions.md: touch | after_bump

For the records, I bump the revision *before* I do ‘ninja deploy’. This ensures that deployed versions do not share revision number with a custom build (I do another ‘ninja bump’ after a successful deploy and ./configure will also set APP_REVISION to ‘current + 1’).
Remove instance data from header

Also add type-safety by introducing a protocol for the delegate.
Improve behavior when resizing subviews

Now resizing one subview has the other view locked at its current size and will stay at that size. Previously if you made the window smaller, causing the HTML view (on right) to shrink, and then resized the file browser to be smaller, the HTML view would grow until it had reclaimed the pixels lost during window resize.

Additionally, when resizing the window, the HTML view (on right) will shrink to its minimum size before the file browser starts to shrink. Previously this was “undefined” and after shrinking a window, you could actually see the two views resize to redistribute the loss.
Switch HTML output window back to NSWindow

The motivation for using a panel was to avoid the window from becoming main (so key equivalents would be sent to the document window, if not handled by the HTML output window). Unfortunately window ordering ignores non-main windows when a window is closed meaning that bringing up the Find dialog from an HTML output window and then closing it, would bring the current main window to front, eclipsing the HTML output window.
Let OS handle keys for Go to Tab submenu

My memory is a little vague here, but I believe the point of handling the menu keys was to workaround a bug in NSMenu.

The bug was that NSMenu would look at (the target of) cached menu items, probably for UI validation, so potentially sending methods to unretained objects, which could lead to a crash. Several workarounds were attempted (like clearing the target property after the menu had been displayed) but the only effective one was overloading key handling.

I’m quite sure though that this bug is no longer relevant.
Delete old file chooser code
Do not timestamp our code signing

This means that the signature will be invalid when the certificate expires, though it also means that codesign runs faster, and as my certificate is valid for another 4 years, people shouldn’t be using the builds released today when the certificate expires.
Account for strings with \0 characters

Previously we would truncate such strings.
Change our main menu keyhandling ≠overload

We manually handle the Bundles menu (like before) and now use performActionForItemAtIndex: to make the menu flash (although presently only for the default items).

For the other menus we now call super and let that handle it. This means it might go into the Bundles menu, even though or menu delegate (for that menu) will say there are no key equivalents. This is only a problem for keys which do match items, but where all the items it matches are not supposed to fire.
Add compatibility code for 10.7