%s@%s
Path: %s
Last run: %s
Status: %s
%s
package webui import ( "context" "fmt" "html" "io" "strings" "time" "github.com/a-h/templ" "satoru/internal/store" ) type RuntimeCheck struct { Name string Installed bool Details string } type WorkflowStage struct { Title string Description string } type DashboardData struct { Now time.Time User store.User Sites []store.Site RuntimeChecks []RuntimeCheck WorkflowStages []WorkflowStage FlashMessage string } func Dashboard(data DashboardData) templ.Component { return templ.ComponentFunc(func(_ context.Context, w io.Writer) error { role := "Operator" if data.User.IsAdmin { role = "Admin" } var checks strings.Builder for _, c := range data.RuntimeChecks { status := "missing" if c.Installed { status = "installed" } checks.WriteString(fmt.Sprintf(`
%s
No sites added yet. Add your first Linux SSH site below.
`) } for _, site := range data.Sites { last := "Never run" if site.LastRunAt.Valid { last = site.LastRunAt.Time.Local().Format(time.RFC1123) } runStatus := "pending" if site.LastRunStatus.Valid { runStatus = site.LastRunStatus.String } runOutput := "(no output yet)" if site.LastRunOutput.Valid && strings.TrimSpace(site.LastRunOutput.String) != "" { runOutput = site.LastRunOutput.String } sites.WriteString(fmt.Sprintf(`Path: %s
Last run: %s
Status: %s
%s
%s
`, html.EscapeString(formatFlash(data.FlashMessage))) } _, err := io.WriteString(w, fmt.Sprintf(`Satoru
Signed in as %s (%s).