From 7e7336cf3be544430aa7167cc01581dce5881bd1 Mon Sep 17 00:00:00 2001 From: moltenhub-bot Date: Tue, 12 May 2026 15:48:02 -0700 Subject: [PATCH] chore: this was the confusing "!" message . It looks like molten still Co-authored-by: Molten Bot 000 <260473928+moltenbot000@users.noreply.github.com> --- internal/web/server_additional_test.go | 23 +++++++++++++++++++++++ internal/web/server_test.go | 4 ++++ internal/web/static/index.html | 4 ++-- internal/web/static/style.css | 11 +++++++++-- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/internal/web/server_additional_test.go b/internal/web/server_additional_test.go index 88c53095..49e54a01 100644 --- a/internal/web/server_additional_test.go +++ b/internal/web/server_additional_test.go @@ -781,6 +781,29 @@ func TestEmbeddedPromptActionStylesCoverPasteWidthAndStatusFade(t *testing.T) { } } +func TestEmbeddedTaskNoChangesUsesSuccessTone(t *testing.T) { + t.Parallel() + + data, err := fs.ReadFile(staticFiles, "static/style.css") + if err != nil { + t.Fatalf("read embedded style.css: %v", err) + } + css := string(data) + + for _, want := range []string{ + ".badge.no_changes {\n background: var(--good);", + ".task-result.no_changes {\n color: var(--surface-success);", + } { + if !strings.Contains(css, want) { + t.Fatalf("embedded style.css missing %q", want) + } + } + if strings.Contains(css, ".badge.no_changes,\n.badge.duplicate") || + strings.Contains(css, ".task-result.no_changes,\n.task-result.duplicate") { + t.Fatalf("embedded style.css should not group no-change tasks with warning/duplicate styles") + } +} + func TestEmbeddedChatPromptLogStylesHideEmptyAndScrollHistory(t *testing.T) { t.Parallel() diff --git a/internal/web/server_test.go b/internal/web/server_test.go index f013eca1..07186722 100644 --- a/internal/web/server_test.go +++ b/internal/web/server_test.go @@ -732,6 +732,10 @@ func TestHandlerIndexServesHTML(t *testing.T) { if !strings.Contains(markup, `if (status === "stopped") {`) || !strings.Contains(markup, `if (status === "error" || status === "invalid") {`) { t.Fatalf("expected index html to separate stopped status icon handling from error/invalid handling") } + if !strings.Contains(markup, `if (status === "completed" || status === "no_changes") {`) || + strings.Contains(markup, `status === "no_changes" || status === "duplicate" || status === "paused"`) { + t.Fatalf("expected index html to render no-change completions with the completed status icon instead of warning") + } if strings.Contains(markup, `status === "error" || status === "invalid" || status === "duplicate" || status === "stopped"`) || !strings.Contains(markup, `status === "error" || status === "invalid" || status === "duplicate"`) { t.Fatalf("expected index html to avoid playing the error sound for user-stopped tasks") } diff --git a/internal/web/static/index.html b/internal/web/static/index.html index 561b54d1..cdaf7844 100644 --- a/internal/web/static/index.html +++ b/internal/web/static/index.html @@ -1003,13 +1003,13 @@

Connect to Hub

} function taskStatusIconKey(status) { - if (status === "completed") { + if (status === "completed" || status === "no_changes") { return "completed"; } if (status === "stopped") { return "stopped"; } - if (status === "no_changes" || status === "duplicate" || status === "paused") { + if (status === "duplicate" || status === "paused") { return "warning"; } if (status === "error" || status === "invalid") { diff --git a/internal/web/static/style.css b/internal/web/static/style.css index dce921c5..7983548d 100644 --- a/internal/web/static/style.css +++ b/internal/web/static/style.css @@ -2757,7 +2757,10 @@ body[data-app-display="studio"][data-prompt-mode="library"] .library-task-list { background: var(--good); } -.badge.no_changes, +.badge.no_changes { + background: var(--good); +} + .badge.duplicate, .badge.paused { background: var(--warn); @@ -4281,12 +4284,16 @@ html.pink .task-progress-step.current .task-progress-step-icon.is-agent-logo { background: rgba(43, 182, 115, 0.1); } -.task-result.no_changes, .task-result.duplicate { color: var(--surface-warning); background: rgba(245, 158, 11, 0.1); } +.task-result.no_changes { + color: var(--surface-success); + background: rgba(43, 182, 115, 0.1); +} + .task-result.stopped { color: var(--surface-badge-idle); background: rgba(113, 136, 177, 0.13);