Show failed loads as errors in the header

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 20:17:27 +02:00
co-authored by Claude Sonnet 5.5
parent e5fdc875af
commit aec4ec6e3b
2 changed files with 8 additions and 3 deletions
+2 -2
View File
@@ -120,12 +120,12 @@ Changes 5 files · 2M 1A 1D 1R · +37 −12
- Untracked directories are shown as one entry (`tmp/`). - Untracked directories are shown as one entry (`tmp/`).
### Header ### Header
`path branch ↑↓ · n submodules · <count> <issue>… · n pin staged · n loading · <fetch>` `path branch ↑↓ · n submodules · n error · <count> <issue>… · n pin staged · n loading · <fetch>`
Issue counts are ordered by severity (unpushed, conflict, missing, off pin, Issue counts are ordered by severity (unpushed, conflict, missing, off pin,
changed), each in its level color. Zero counts are omitted. `n loading` changed), each in its level color. Zero counts are omitted. `n loading`
counts only submodules whose status is still being loaded; ones whose load counts only submodules whose status is still being loaded; ones whose load
failed (shown as `error`) are not counted. A detached failed are counted separately as `n error` (red, before the issue counts). A detached
superproject shows `(detached)` as its branch. superproject shows `(detached)` as its branch.
`<fetch>` on the right: `<fetch>` on the right:
+6 -1
View File
@@ -36,7 +36,7 @@ func View(t theme.Theme, repo *submodule.Repo, fetch Fetch, spinner string, widt
} }
// count submodules per issue kind (most severe first), plus staged pins // count submodules per issue kind (most severe first), plus staged pins
var total, loading, staged int var total, loading, errored, staged int
perKind := map[submodule.IssueKind]int{} perKind := map[submodule.IssueKind]int{}
level := map[submodule.IssueKind]submodule.Level{} level := map[submodule.IssueKind]submodule.Level{}
submodule.Walk(repo.Submodules, func(s *submodule.Submodule) { submodule.Walk(repo.Submodules, func(s *submodule.Submodule) {
@@ -44,6 +44,8 @@ func View(t theme.Theme, repo *submodule.Repo, fetch Fetch, spinner string, widt
if s.Status == nil { if s.Status == nil {
if s.Err == nil { if s.Err == nil {
loading++ loading++
} else {
errored++
} }
return return
} }
@@ -58,6 +60,9 @@ func View(t theme.Theme, repo *submodule.Repo, fetch Fetch, spinner string, widt
sep := seg(t.Muted, " · ") sep := seg(t.Muted, " · ")
mid := seg(t.Muted, fmt.Sprintf("%d submodules", total)) mid := seg(t.Muted, fmt.Sprintf("%d submodules", total))
if errored > 0 {
mid += sep + t.LevelStyle(submodule.LevelDanger, bar).Render(fmt.Sprintf("%d error", errored))
}
for _, k := range []submodule.IssueKind{ for _, k := range []submodule.IssueKind{
submodule.IssueUnpushed, submodule.IssueConflict, submodule.IssueMissing, submodule.IssueUnpushed, submodule.IssueConflict, submodule.IssueMissing,
submodule.IssueOffPin, submodule.IssueChanged, submodule.IssueOffPin, submodule.IssueChanged,