fix(tui): broken tick chain after form/dialog + retries off-by-one
CI / test (pull_request) Successful in 2m43s
CI / lint (pull_request) Successful in 56s
CI / vulncheck (pull_request) Successful in 51s

Update() routed form and confirm-delete states before handling
time.Time ticks, so those handlers swallowed the tick command and
permanently broke the refresh loop. After opening any form or
delete dialog, the TUI stopped auto-refreshing until restarted.

Move time.Time and WindowSizeMsg handling before state dispatch
so ticks always fire regardless of view state.

Also fix fmtRetries off-by-one: FailureCount=1 displayed as 0/N
instead of 1/N due to an erroneous subtract-one.
This commit is contained in:
2026-06-04 12:34:10 -04:00
parent eb9546c97e
commit 5b39be8eb2
2 changed files with 8 additions and 9 deletions
+1 -5
View File
@@ -110,11 +110,7 @@ func fmtSSL(site models.Site) string {
}
func fmtRetries(site models.Site) string {
retriesDone := site.FailureCount - 1
if retriesDone < 0 {
retriesDone = 0
}
dispCount := retriesDone
dispCount := site.FailureCount
if dispCount > site.MaxRetries {
dispCount = site.MaxRetries
}
+7 -4
View File
@@ -10,6 +10,13 @@ import (
)
func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg := msg.(type) {
case tea.WindowSizeMsg:
return m.handleResize(msg)
case time.Time:
return m.handleTick(msg)
}
if m.state == stateConfirmDelete {
return m.handleConfirmDelete(msg)
}
@@ -18,10 +25,6 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
switch msg := msg.(type) {
case tea.WindowSizeMsg:
return m.handleResize(msg)
case time.Time:
return m.handleTick(msg)
case tea.MouseMsg:
return m.handleMouse(msg)
case tea.KeyMsg: