mirror of
https://github.com/Gu1llaum-3/sshm.git
synced 2026-01-27 03:04:21 +01:00
feat: add automatic version update checking and notifications
- Add internal/version module for GitHub release checking - Integrate async version check in Bubble Tea UI - Display update notification in main interface - Add version check to --version/-v command output - Include comprehensive version comparison and error handling - Add unit tests for version parsing and comparison logic
This commit is contained in:
@@ -54,6 +54,20 @@ func (m Model) renderListView() string {
|
||||
// Add the ASCII title
|
||||
components = append(components, m.styles.Header.Render(asciiTitle))
|
||||
|
||||
// Add update notification if available (between title and search)
|
||||
if m.updateInfo != nil && m.updateInfo.Available {
|
||||
updateText := fmt.Sprintf("🚀 Update available: %s → %s",
|
||||
m.updateInfo.CurrentVer,
|
||||
m.updateInfo.LatestVer)
|
||||
|
||||
updateStyle := lipgloss.NewStyle().
|
||||
Foreground(lipgloss.Color("10")). // Green color
|
||||
Bold(true).
|
||||
Align(lipgloss.Center) // Center the notification
|
||||
|
||||
components = append(components, updateStyle.Render(updateText))
|
||||
}
|
||||
|
||||
// Add the search bar with the appropriate style based on focus
|
||||
searchPrompt := "Search (/ to focus): "
|
||||
if m.searchMode {
|
||||
@@ -157,3 +171,30 @@ func (m Model) renderDeleteConfirmation() string {
|
||||
|
||||
return box.Render(raw)
|
||||
}
|
||||
|
||||
// renderUpdateNotification renders the update notification banner
|
||||
func (m Model) renderUpdateNotification() string {
|
||||
if m.updateInfo == nil || !m.updateInfo.Available {
|
||||
return ""
|
||||
}
|
||||
|
||||
// Create the notification message
|
||||
message := fmt.Sprintf("🚀 Update available: %s → %s",
|
||||
m.updateInfo.CurrentVer,
|
||||
m.updateInfo.LatestVer)
|
||||
|
||||
// Add release URL if available
|
||||
if m.updateInfo.ReleaseURL != "" {
|
||||
message += fmt.Sprintf(" • View release: %s", m.updateInfo.ReleaseURL)
|
||||
}
|
||||
|
||||
// Style the notification with a bright color to make it stand out
|
||||
notificationStyle := lipgloss.NewStyle().
|
||||
Foreground(lipgloss.Color("#00FF00")). // Bright green
|
||||
Bold(true).
|
||||
Padding(0, 1).
|
||||
Border(lipgloss.RoundedBorder()).
|
||||
BorderForeground(lipgloss.Color("#00AA00")) // Darker green border
|
||||
|
||||
return notificationStyle.Render(message)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user