diff --git a/containers/libreportal/frontend/css/tasks.css b/containers/libreportal/frontend/css/tasks.css index 5a9b155..010a2f7 100644 --- a/containers/libreportal/frontend/css/tasks.css +++ b/containers/libreportal/frontend/css/tasks.css @@ -329,7 +329,11 @@ } .task-command { - color: var(--status-success); + /* Bright mint to match the .status-running / .status-completed pills. + The theme's --status-success (#28a745) reads muddy olive on nebula — + this is the same #86efac treatment used by the status pills + the + setup-wizard valid border + the apps "Installed" pill. */ + color: #86efac; font-family: 'Courier New', monospace; font-size: 11px; flex: 1; diff --git a/containers/libreportal/frontend/js/components/tasks/tasks-manager.js b/containers/libreportal/frontend/js/components/tasks/tasks-manager.js index 4252c10..36d17b7 100755 --- a/containers/libreportal/frontend/js/components/tasks/tasks-manager.js +++ b/containers/libreportal/frontend/js/components/tasks/tasks-manager.js @@ -491,8 +491,18 @@ class TasksManager { if (this.highlightedTaskId) { message = `Task ${this.highlightedTaskId} not found`; } else { - const categoryName = this.getCategoryDisplayName(this.currentCategory); - message = `No ${categoryName.toLowerCase()} tasks found`; + // Category display names sometimes already end in "Tasks" (e.g. + // "All Tasks", "Running Tasks") — naive interpolation produced + // "No all tasks tasks found". Strip the trailing word when + // present, and special-case the "all" bucket to read naturally. + const catLow = this.getCategoryDisplayName(this.currentCategory).toLowerCase(); + if (catLow === 'all tasks' || catLow === 'all') { + message = 'No tasks found'; + } else if (catLow.endsWith(' tasks')) { + message = `No ${catLow} found`; + } else { + message = `No ${catLow} tasks found`; + } } container.innerHTML = `