moose

A purpose-built git diff review tool for macOS: a persistent file list, side-by-side diffs, and keyboard navigation across every changed file in one command.

moose is closed source — all rights reserved, no LICENSE file, that’s deliberate. Requires macOS 15 (Sequoia) or later, on Apple Silicon.

Install

No toolchain needed:

  1. Download the latest Moose.dmg and drag Moose.app to /Applications. (Or, once the tap is public: brew install --cask jonarcher/moose/moose.)
  2. Double-click it. There’s no moose command on your PATH yet, so this is the only way to launch it the first time — with no repository to review, it shows a short landing screen instead. From there, use its button to open Preferences and install the command line tool.
  3. From then on, moose from any terminal, inside any repository, opens a review window for it.

Use

moose              # review uncommitted changes in the current repo — staged,
                    # unstaged, and untracked, all against HEAD
moose main          # compare the current branch against main via merge-base:
                    # every commit the branch has made since it diverged,
                    # plus uncommitted work, but nothing landed on main since

Keyboard:

  • ⌘↓ / ⌘↑ — next/previous change, rolling across file boundaries once the current file is exhausted
  • ↓ / ↑ — next/previous file, listed in the Navigate menu as documentation for what’s really the file list’s own native row navigation (it takes plain arrow keys once focused, which — since nothing else in the window is focusable — is essentially always) rather than a separate app-level shortcut
  • ⌘R — refresh (the review also refreshes automatically whenever the window regains focus)
  • ⌘1 / ⌘2 / ⌘3 — toggle the Staged / Unstaged / Untracked filter; ⌘0 shows all three. Meaningless (and disabled) when reviewing against a ref rather than uncommitted changes — there’s no index to compare against, so every file in that mode shows regardless.
  • ⌘, — Preferences: fill-the-screen and syntax-highlighting toggles, and the command line tool install/remove. Esc closes it.

Syntax highlighting covers bash, python, swift, java, markdown, and properties/ini files, resolved from the file extension; anything else renders plain. It follows the system light/dark appearance and sits underneath word-level diff highlighting, which is a stronger tint of the row’s own red/green background rather than a separate color.