• v0.3.0 8aa12774eb

    v0.3.0 Pre-Release

    simonfranken released this 2026-10-21 18:58:43 +00:00 | 28 commits to main since this release

    Third release of submarine. Still a prototype: browsing is complete, actions are not yet implemented. This release makes the shown ref more useful and adds a way to copy a path.

    Highlights

    • A pin now resolves to the closest branch. Before, a branch = … entry in .gitmodules always won, so a pin on a pushed feature branch showed as diverged from origin/main (e.g. ↑7↓26). Now the branch containing the pin with the fewest commits after it is shown; the .gitmodules branch, the upstream and the remote default branch only break ties.
    • Side effect: a pin on main that a younger branch also contains shows that branch if its tip is closer (origin/main ↓56 becomes origin/flo-dev ↓4). The detail pane's via … line says which rule picked the ref.
    • An unpushed, detached pin without a .gitmodules branch or upstream is now compared with the remote default branch instead of falling back to a tag or SHA.
    • c copies the selected submodule's absolute path (OSC 52, works over SSH).
    • The key bar is split into groups: global keys in the footer, submodule keys in the detail pane.

    Install

    curl -fsSL https://git.simon-franken.de/simonfranken/submarine/raw/branch/main/install.sh | sh
    

    Installs submarine and the alias sub (linux/macOS, amd64/arm64) to ~/.local/bin. Update from 0.2.0 with submarine update.

    Binaries and checksums.txt are published in the package registry (generic package submarine, version v0.3.0).

    Known limitations

    • The actions u, b, / and ! only show a "not implemented" message.
    Downloads
  • v0.2.0 90ea9cc241

    v0.2.0 Pre-Release

    simonfranken released this 2026-10-21 18:30:14 +00:00 | 30 commits to main since this release

    Second release of submarine. Still a prototype: browsing is complete, actions are not yet implemented. This release is about making problems visible and easier to navigate.

    Highlights

    • Failed loads are now visible. A submodule whose status cannot be read (e.g. a stale .gitmodules entry without a gitlink) shows error, is counted as n error in the top bar, and no longer keeps n loading there forever.
    • Collapsed parents show hidden issues per level: ·1 ·1 is one error (red) plus one warning (yellow), instead of a single count in the worst color. A hidden load error counts as an error.
    • Untracked directories that are git repositories themselves (cloned, never added as a submodule) are shown as untracked repository.
    • Expand/collapse all also works with shift+←/→ and H/L, since ctrl+←/→ is captured on macOS.
    • The key legend now shows j/k, h/l and the expand/collapse-all keys.

    Install

    curl -fsSL https://git.simon-franken.de/simonfranken/submarine/raw/branch/main/install.sh | sh
    

    Installs submarine and the alias sub (linux/macOS, amd64/arm64) to ~/.local/bin. Update from 0.1.0 with submarine update.

    Binaries and checksums.txt are published in the package registry (generic package submarine, version 0.2.0).

    Known limitations

    • The actions u, b, / and ! only show a "not implemented" message.
    Downloads
  • v0.1.0 633de5aab1

    v0.1.0 Pre-Release

    simonfranken released this 2026-10-21 18:01:04 +00:00 | 38 commits to main since this release

    First release of submarine, a terminal UI for git repositories with many (nested) submodules. This is a prototype: browsing is complete, actions are not yet implemented.

    Highlights

    • Collapsible tree showing only the submodules, with each pin described as a branch plus distance (e.g. origin/main ↓1) instead of a bare commit hash.
    • Reads real repositories through a read-only git provider: submarine [dir].
    • Background fetch on startup (--no-fetch to skip, f to fetch again), and follows changes made in other shells.
    • Detail pane previews uncommitted changes.
    • Submodules without issues show a muted "in sync".
    • submarine --mock runs on built-in mock data.

    Install

    curl -fsSL https://git.simon-franken.de/simonfranken/submarine/raw/branch/main/install.sh | sh
    

    Installs submarine and the alias sub (linux/macOS, amd64/arm64) to ~/.local/bin. Update later with submarine update.

    Binaries and checksums.txt are published in the package registry (generic package submarine, version 0.1.0).

    Known limitations

    • The actions u, b, / and ! only show a "not implemented" message.
    Downloads