GitHub has no generic package registry, so releases become GitHub release assets. The updater and install.sh read releases/latest/download and releases/download/<v>/, plain redirects with no API rate limit. make release publishes a draft with all assets, then makes it latest. make release-gitea publishes the same version to the old Gitea registry for binaries that still update from there, and refuses until GitHub serves it. See D33. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.2 KiB
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 | the write actions restore, switch branch and update pin |
| decisions.md | Decision log with rationale (ADR style) |
Install
curl -fsSL https://raw.githubusercontent.com/simonfranken/submarine/main/install.sh | sh
Installs submarine and the alias sub (linux/macOS, amd64/arm64) to
~/.local/bin. Update with submarine update. Maintainers publish with
make release NOTES=… (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 (X also drops
staged pins), b switches its
branch and u updates a pin that is behind (actions.md).
Next steps, roughly in order:
- (done) Write actions: restore, switch branch, update pin, see actions.md. Stage pin was dropped (D29).
- (done) "Problems only" (
!) view, reusing the tree's filter. - Usability pass for users new to submodules, see notes/usability-plan.md. The low-effort items are done (D31, D32); next are the issue hints and the palette that fits the selection.