Skip to content

Commit 0a6c765

Browse files
authored
Show the current version on the lower left corner in the status bar (#116)
<img width="1377" height="919" alt="Screenshot 2025-09-05 at 17 29 59" src="https://github.com/user-attachments/assets/8aef38e8-38ed-413e-99ff-a840e09b7e98" /> Signed-off-by: Djordje Lukic <[email protected]>
1 parent a7c52d6 commit 0a6c765

File tree

5 files changed

+47
-28
lines changed

5 files changed

+47
-28
lines changed

Taskfile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ vars:
1212
sh: date -u +"%Y-%m-%dT%H:%M:%SZ"
1313
GO_SOURCES: "**/*.go"
1414
BUILD_ARGS: '--build-arg GIT_TAG="{{.GIT_TAG}}" --build-arg GIT_COMMIT="{{.GIT_COMMIT}}" --build-arg BUILD_DATE="{{.BUILD_DATE}}" --build-arg TELEMETRY_ENDPOINT="{{.TELEMETRY_ENDPOINT}}" --build-arg TELEMETRY_API_KEY="{{.TELEMETRY_API_KEY}}" --build-arg TELEMETRY_HEADER="{{.TELEMETRY_HEADER}}"'
15-
LDFLAGS: '-X "github.com/docker/cagent/cmd/root.Version={{.GIT_TAG}}" -X "github.com/docker/cagent/cmd/root.Commit={{.GIT_COMMIT}}" -X "github.com/docker/cagent/cmd/root.BuildTime={{.BUILD_DATE}}" -X "github.com/docker/cagent/internal/telemetry.TelemetryEndpoint={{.TELEMETRY_ENDPOINT}}" -X "github.com/docker/cagent/internal/telemetry.TelemetryAPIKey={{.TELEMETRY_API_KEY}}" -X "github.com/docker/cagent/internal/telemetry.TelemetryHeader={{.TELEMETRY_HEADER}}"'
15+
LDFLAGS: '-X "github.com/docker/cagent/internal/version.Version={{.GIT_TAG}}" -X "github.com/docker/cagent/internal/version.Commit={{.GIT_COMMIT}}" -X "github.com/docker/cagent/internal/version.BuildTime={{.BUILD_DATE}}" -X "github.com/docker/cagent/internal/telemetry.TelemetryEndpoint={{.TELEMETRY_ENDPOINT}}" -X "github.com/docker/cagent/internal/telemetry.TelemetryAPIKey={{.TELEMETRY_API_KEY}}" -X "github.com/docker/cagent/internal/telemetry.TelemetryHeader={{.TELEMETRY_HEADER}}"'
1616

1717
tasks:
1818
default:

cmd/root/root.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/docker/cagent/internal/config"
1212
"github.com/docker/cagent/internal/telemetry"
13+
"github.com/docker/cagent/internal/version"
1314
"github.com/spf13/cobra"
1415
)
1516

@@ -106,7 +107,7 @@ func NewRootCmd() *cobra.Command {
106107

107108
func Execute() {
108109
// Set the version for automatic telemetry initialization
109-
telemetry.SetGlobalTelemetryVersion(Version)
110+
telemetry.SetGlobalTelemetryVersion(version.Version)
110111

111112
// Print startup message only on first installation/setup
112113
if isFirstRun() {

cmd/root/version.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@ import (
44
"fmt"
55

66
"github.com/docker/cagent/internal/telemetry"
7+
"github.com/docker/cagent/internal/version"
78
"github.com/spf13/cobra"
89
)
910

10-
// version information
11-
var (
12-
Version = "dev"
13-
BuildTime = "unknown"
14-
Commit = "unknown"
15-
)
16-
1711
// NewVersionCmd creates a new version command
1812
func NewVersionCmd() *cobra.Command {
1913
return &cobra.Command{
@@ -24,9 +18,9 @@ func NewVersionCmd() *cobra.Command {
2418
// Track the version command
2519
telemetry.TrackCommand("version", args)
2620

27-
fmt.Printf("cagent version %s\n", Version)
28-
fmt.Printf("Build time: %s\n", BuildTime)
29-
fmt.Printf("Commit: %s\n", Commit)
21+
fmt.Printf("cagent version %s\n", version.Version)
22+
fmt.Printf("Build time: %s\n", version.BuildTime)
23+
fmt.Printf("Commit: %s\n", version.Commit)
3024
},
3125
}
3226
}

internal/tui/components/statusbar/statusbar.go

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import (
44
"strings"
55

66
"github.com/charmbracelet/bubbles/v2/key"
7+
"github.com/charmbracelet/lipgloss/v2"
78
"github.com/docker/cagent/internal/tui/core"
89
"github.com/docker/cagent/internal/tui/styles"
10+
"github.com/docker/cagent/internal/version"
911
)
1012

1113
// StatusBar represents the status bar component that displays key bindings help
@@ -47,27 +49,41 @@ func (s *StatusBar) formatHelpString(bindings []key.Binding) string {
4749

4850
// View renders the status bar
4951
func (s *StatusBar) View() string {
50-
if s.help == nil {
51-
return ""
52-
}
52+
versionText := styles.MutedStyle.Render(version.Version)
5353

54-
help := s.help.Help()
55-
if help == nil {
56-
return ""
54+
var helpText string
55+
if s.help != nil {
56+
help := s.help.Help()
57+
if help != nil {
58+
shortcuts := help.ShortHelp()
59+
if len(shortcuts) > 0 {
60+
helpText = s.formatHelpString(shortcuts)
61+
}
62+
}
5763
}
5864

59-
shortcuts := help.ShortHelp()
60-
if len(shortcuts) == 0 {
61-
return ""
65+
// If no help text, just show version aligned right
66+
if helpText == "" {
67+
return styles.BaseStyle.
68+
Width(s.width).
69+
PaddingLeft(1).
70+
PaddingRight(1).
71+
Align(lipgloss.Right).
72+
Render(versionText)
6273
}
6374

64-
statusText := s.formatHelpString(shortcuts)
65-
if statusText == "" {
66-
return ""
75+
helpStyled := styles.BaseStyle.PaddingLeft(1).Render(helpText)
76+
versionStyled := styles.BaseStyle.PaddingRight(1).Render(versionText)
77+
78+
helpWidth := lipgloss.Width(helpStyled)
79+
versionWidth := lipgloss.Width(versionStyled)
80+
availableSpace := s.width - helpWidth - versionWidth
81+
82+
if availableSpace < 0 {
83+
availableSpace = 1
6784
}
6885

69-
return styles.BaseStyle.
70-
Width(s.width).
71-
PaddingLeft(1).
72-
Render(statusText)
86+
spacer := strings.Repeat(" ", availableSpace)
87+
88+
return helpStyled + spacer + versionStyled
7389
}

internal/version/version.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package version
2+
3+
// version information
4+
var (
5+
Version = "dev"
6+
BuildTime = "unknown"
7+
Commit = "unknown"
8+
)

0 commit comments

Comments
 (0)