Show a muted "in sync" for submodules without issues

An empty status cell could be read as missing data. The muted word
confirms the check ran without drawing attention. The word is defined
once in the theme and shared with the detail pane.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Simon Franken
2026-10-21 16:18:17 +02:00
co-authored by Claude Opus 5.5
parent 27f0c0b5d2
commit 6e1236d495
5 changed files with 14 additions and 5 deletions
+1 -1
View File
@@ -74,7 +74,7 @@ func (m Model) lines(s *submodule.Submodule) []string {
out = append(out, t.LevelStyle(is.Level, lipgloss.NewStyle()).Width(labelWidth).Render(theme.IssueWord(is.Kind))+text.Render(is.Detail))
}
if len(issues) == 0 {
out = append(out, label("in sync")+muted.Render("nothing to do"))
out = append(out, label(theme.InSync)+muted.Render("nothing to do"))
}
if st.PinStaged {
out = append(out, theme.Fg(t.Info).Width(labelWidth).Render("staged")+text.Render("pin change staged, not committed"))
+3
View File
@@ -9,6 +9,9 @@ import (
"submarine/internal/submodule"
)
// InSync is the word for a submodule without issues.
const InSync = "in sync"
// IssueWord is the short label for an issue kind shown in the tree.
func IssueWord(k submodule.IssueKind) string {
switch k {
+4 -1
View File
@@ -398,7 +398,8 @@ func (m Model) nodeLine(r row, nameColW, refW int) string {
name := ansi.Truncate(s.Name, max(nameW-len(count), 1), "…")
nameCell := seg(textColor, name) + seg(t.Muted, count) + pad(nameW-lipgloss.Width(name+count))
// status: the most severe issue as a word, "+n" for further issues
// status: the most severe issue as a word, "+n" for further issues;
// a muted "in sync" without issues, so an empty cell never looks broken
var status string
switch {
case s.Err != nil:
@@ -410,6 +411,8 @@ func (m Model) nodeLine(r row, nameColW, refW int) string {
if len(issues) > 1 {
status += seg(t.Muted, fmt.Sprintf(" +%d", len(issues)-1))
}
default:
status = seg(t.Muted, theme.InSync)
}
if k, worst := s.HiddenIssues(); collapsed && k > 0 {
if status != "" {