This repository has been archived on 2026-10-25. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
submarine/docs
simonfrankenandClaude Opus 5.5 b9f6055759 Restore keeps staged pins; offer the committed pin for a staged one
Staged pins survive a restore at every depth and are the targets of the
submodules below. For a submodule with a staged pin, x asks whether to
restore to the staged or the committed pin, the latter unstaging it.
Staged pins of a repository that moves count as a loss.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 12:42:20 +02:00
..

submarine — documentation

submarine is a terminal UI for git repositories with many (recursively nested) submodules. It shows the submodules, as a collapsible tree (plus the state of the superproject itself in the header), and describes each pin as a branch plus distance (origin/main ↓1) instead of a bare commit hash.

Documents

Document Contents
requirements.md What the tool must do: functional and non-functional requirements
state-model.md How a submodule's state is determined, summarized into issues, and how pins are resolved to refs
ux-guide.md Layout, attention hierarchy, colors, wording, navigation and key bindings
architecture.md Package layout, the provider boundary, async loading, testing
actions.md Draft: the write actions restore and stage pin
decisions.md Decision log with rationale (ADR style)

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 with submarine update. Maintainers publish with GITEA_TOKEN=… make release (see architecture).

Status

Prototype. The UI is complete for browsing. It reads real repositories through a git provider (internal/submodule/git): submarine [dir]. It fetches only when asked (f) and follows changes made in other shells. submarine --mock shows the built-in mock data (internal/submodule/mock). ! shows only submodules with problems. x restores the selection (actions.md); stage pin is drafted there.

Next steps, roughly in order:

  1. Stage pin, see actions.md. (Restore is done.)
  2. (done) "Problems only" (!) view, reusing the tree's filter.