Checkin release notes
Handle creating a new bundle with name of existing bundle

Previously we would ensure that /path/to/info.plist inside the bundle was unique when we should have ensured that the actual bundle name was unique.
Resolve path for a bundle item after it has been created

We may save to a symlinked path but generally always work with resolved paths (for cache lookups, fs-events, etc.).
Deleting a bundle would only delete the contained info.plist
Invalidate bundle item (disk) cache when saving in bundle editor

Normally the cache is automatically invalidated via fs-events, but that is sadly unreliable.

Should fix #1034.
Add code for comparing complex version strings
Trim version string received from server
Use complex version string during software update checks

While it is simpler to compare a monotonically increasing integer (the revision), we always use the semantic version string in the user interface, meaning that this version string should change together with the revision, which effectively means we are maintaing two version numbers.

We previously embedded the revision in the version string (2.0-alpha.$revision) but when going from alpha → beta, it would be nice to reset the visible counter, so that first beta becomes 2.0-beta.1, furthermore, test versions could benefit from a more descriptive version string, e.g. “2.0-alpha.9439.2+debug” would be the second (semi-public) debug build after “2.0-alpha.9439”.
Remove revision field from version_info_t
Do not resolve broken symbolic links

Links that would point “above” the root (e.g. ‘/foo’ → ‘../../bar’) would cause an infinite recursion and eventually crash.
Use weak pointer for block-accessed run loop

I am seeing some crashes related to this code. My best guess is that a command execution (with exit handler) is created and then cancelled from JavaScript, which would invoke the cleanup block that uses the (now destroyed, but non-nilled) run loop.
Allow customizing what is used for ‘Go to File Counterpart’ (⌥⌘↑)

The user can now set ‘counterpart’ in .tm_properties to the absolute path of what should be used for ⌥⌘↑. If the file does not exist (on disk or as an open tab) then TextMate will fallback to searching the current folder for a file with same name.

To switch between go source and go test files one could add the following:

   [ *.go ]
   counterpart = "${TM_FILEPATH/(_test)?\.go$/${1:?:_test}.go/}"

Here the regular expression transformation will remove ‘_test’ from the file name if it exists, otherwise add it.

One could also do multiple settings like:

   [ *.go ]
   counterpart = "${TM_FILEPATH/(?=\.go$)/_test/}"

   [ *_test.go ]
   counterpart = "${TM_FILEPATH/_test(?=\.go$)//}"

Here ‘*.go’ files get the ‘_test’ added to their name, though files matched by the ‘*_test.go’ glob will instead have it removed.
If no counterpart is found, create tab with custom path

This way, if we specify that ‘*.go’ has a counterpart of ‘*_test.go’ but no test file exist (and no other files with same base name) then ⌥⌘↑ will create a new tab using the test file path as default save path.
Remove obsolete help text for mate -n
File browser icon bindings were semi-case-sensitive

We compared the lowercased extension or file name with the case-preserved entry in the bindings.plist file, meaning e.g. ‘Makefile’ never got the intended icon.
Add new file types

This includes a new “braces” icon for use in the file browser, presently only used by ‘.go’ files.
Move some Go menu items to Navigate menu

The Go to Symbol and Line are now in the Navigate menu, which means everything in the Go menu is about selecting a file or folder (for the file browser location).

The Navigate menu is about navigating around in the current file.

Also change menu item title “Go to Counterpart…” → “Go to Related File”
Change “counterpart” to “related file”

This applies both to the action method and the settings key, the latter is now relatedFilePath to indicate that it’s a full absolute path (neither relative or a glob pattern).
Add “related file” settings for *.go (test) files

With this setting ⌥⌘↑ will switch between test and non-test *.go files.
Fix “unused variable” compiler warning