From b68a62815dd6de475a12f471a327dd1d92a5cd93 Mon Sep 17 00:00:00 2001 From: Maxei6 Date: Fri, 27 Mar 2026 16:35:53 +0000 Subject: [PATCH 1/2] fix: modal close button unclickable due to CSS grid column ratio The modal header used grid-template-columns: 40fr 0.5fr which gave the close button only ~1.2% of the header width, making it effectively unclickable. Changed to grid-template-columns: 1fr auto which gives the title flexible space while keeping the close button at its natural width. --- webui/css/modals.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webui/css/modals.css b/webui/css/modals.css index a86229629d..0c41b0652a 100644 --- a/webui/css/modals.css +++ b/webui/css/modals.css @@ -78,7 +78,7 @@ some classes like modal-header are shared between the old and the new system */ /* Modal Header */ .modal-header { display: grid; - grid-template-columns: 40fr 0.5fr; + grid-template-columns: 1fr auto; align-items: center; justify-content: space-between; padding: 0.5rem 1.5rem 0.5rem 2rem; From 92a30dfdda63d65441f03cb6cb6db91143b230bd Mon Sep 17 00:00:00 2001 From: Maxei6 Date: Sat, 28 Mar 2026 00:22:45 +0000 Subject: [PATCH 2/2] fix: scheduler task UUID mismatch causing 'Task not found' errors Changed task ID field references from 'id' to 'uuid' to match backend: - scheduler-store.js: Added context_id fallback in syncTasksFromSidebar - tasks-store.js: Fixed contains() to use t?.uuid instead of t?.id - tasks-store.js: Fixed firstId() to return this.tasks[0]?.uuid This fixes the 'Failed to save task' and 'Task not found' errors. --- webui/components/modals/scheduler/scheduler-store.js | 2 +- webui/components/sidebar/tasks/tasks-store.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/webui/components/modals/scheduler/scheduler-store.js b/webui/components/modals/scheduler/scheduler-store.js index cc654bf028..9fe4ed6af6 100644 --- a/webui/components/modals/scheduler/scheduler-store.js +++ b/webui/components/modals/scheduler/scheduler-store.js @@ -944,7 +944,7 @@ const schedulerStoreModel = { // Smart merge: preserve object references to prevent UI flickering const taskMap = new Map(this.tasks.map((t) => [t.uuid, t])); this.tasks = sidebarTasks.map((sidebarTask) => { - const taskId = sidebarTask.uuid || sidebarTask.id; + const taskId = sidebarTask.uuid || sidebarTask.id || sidebarTask.context_id; const existing = taskMap.get(taskId); if (existing) { // Update existing object in-place if different diff --git a/webui/components/sidebar/tasks/tasks-store.js b/webui/components/sidebar/tasks/tasks-store.js index eb44a67de1..9f61f69fcb 100644 --- a/webui/components/sidebar/tasks/tasks-store.js +++ b/webui/components/sidebar/tasks/tasks-store.js @@ -36,12 +36,12 @@ const model = { // Returns true if a task with the given id exists in the current list contains(taskId) { - return Array.isArray(this.tasks) && this.tasks.some((t) => t?.id === taskId); + return Array.isArray(this.tasks) && this.tasks.some((t) => t?.uuid === taskId); }, // Convenience: id of the first task in the current list (or empty string) firstId() { - return (Array.isArray(this.tasks) && this.tasks[0]?.id) || ""; + return (Array.isArray(this.tasks) && this.tasks[0]?.uuid) || ""; }, // Action methods for task management