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
Simon FrankenandClaude Opus 5.5 64fe34b5b0 Add read-only git provider
Implement submodule.Provider with the git CLI so submarine reads real
repositories: `submarine [dir]`, with `--mock` for the built-in data.

- Tree reads .gitmodules recursively; Status derives presence, checkout,
  worktree, staged pin, pushed state and pin -> ref resolution from local
  git commands only (no network).
- Concurrent Status calls are bounded by runtime.NumCPU().
- scripts/make-fixture.sh builds a superproject covering every state; the
  integration tests run against it.
- theme.Ago shows "never" for a zero time.
- Docs updated; decisions D14-D16 added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 15:32:21 +02:00
..
2026-10-21 15:32:21 +02:00
2026-10-21 15:32:21 +02:00
2026-10-21 15:32:21 +02:00
2026-10-21 15:32:21 +02:00
2026-10-21 15:32:21 +02:00
2026-10-21 15:32:21 +02:00

submarine — documentation

submarine is a terminal UI for git repositories with many (recursively nested) submodules. It shows only the submodules, as a collapsible tree, 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
decisions.md Decision log with rationale (ADR style)

Status

Prototype. The UI is complete for browsing. It reads real repositories through a read-only git provider (internal/submodule/git): submarine [dir]. submarine --mock shows the built-in mock data (internal/submodule/mock). Actions (u, b, f, /, !) only show a "not implemented" message.

Next steps, roughly in order:

  1. Actions: fetch, checkout pin (submodule update), bump pin to tip, init.
  2. Filter (/) and "problems only" (!) views.
  3. Refresh after actions and on demand.