From b3eb58d50eea5b235a1c33d5c8787dc81064c46b Mon Sep 17 00:00:00 2001 From: soryu Date: Sun, 18 Jan 2026 19:55:37 +0000 Subject: Clean up mesh page (#6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Filter mesh page task list to show only supervisor tasks - Add `isSupervisor` filter to rootTasks filter in TaskList component - Only supervisor tasks will appear in the mesh page task list - Regular tasks are now hidden from the main view - Update empty state messages to reflect supervisor-only filtering - When clicking a supervisor task, its detail still shows orchestrated tasks Co-Authored-By: Claude Opus 4.5 * Add supervisor task button to workflow board contract cards - Add supervisorTaskId field to ContractSummary type in backend and frontend - Update SQL queries in repository.rs to include supervisor_task_id - Add navigation button (▶) to WorkflowContractCard that links to /mesh/{supervisorTaskId} - Button only shows when contract has a supervisorTaskId - Button has tooltip "Open Supervisor Task" and stops propagation to avoid triggering card click Co-Authored-By: Claude Opus 4.5 * Add full task page navigation button to TaskTree rows Add a hover-visible arrow icon (↗) to each task row in the TaskTree component that links to the full task page (/tasks/{taskId}). The button: - Appears on hover using opacity transition - Stops event propagation to avoid triggering parent onSelect - Matches existing hover styling patterns with the #75aafc color scheme Co-Authored-By: Claude Opus 4.5 --------- Co-authored-by: Claude Opus 4.5 --- makima/frontend/src/components/mesh/TaskList.tsx | 8 ++++---- makima/frontend/src/components/mesh/TaskTree.tsx | 10 ++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) (limited to 'makima/frontend/src/components/mesh') diff --git a/makima/frontend/src/components/mesh/TaskList.tsx b/makima/frontend/src/components/mesh/TaskList.tsx index f829b29..80077b6 100644 --- a/makima/frontend/src/components/mesh/TaskList.tsx +++ b/makima/frontend/src/components/mesh/TaskList.tsx @@ -95,8 +95,8 @@ export function TaskList({ // Group tasks by contract and filter by status const groupedTasks = useMemo(() => { - // Separate root tasks (no parent) from subtasks - const rootTasks = tasks.filter((t) => !t.parentTaskId); + // Separate root tasks (no parent) from subtasks, and only show supervisor tasks + const rootTasks = tasks.filter((t) => !t.parentTaskId && t.isSupervisor); // Filter tasks based on contract status const filteredTasks = statusFilter === 'all' @@ -205,8 +205,8 @@ export function TaskList({ {totalTasks === 0 ? (
{statusFilter === 'all' - ? 'No tasks yet. Create one to start orchestrating Claude Code instances.' - : `No ${statusFilter} tasks found.`} + ? 'No supervisor tasks yet. Create a contract to start orchestrating tasks.' + : `No ${statusFilter} supervisor tasks found.`}
) : (
diff --git a/makima/frontend/src/components/mesh/TaskTree.tsx b/makima/frontend/src/components/mesh/TaskTree.tsx index 46ae78d..296d3c6 100644 --- a/makima/frontend/src/components/mesh/TaskTree.tsx +++ b/makima/frontend/src/components/mesh/TaskTree.tsx @@ -165,6 +165,16 @@ function TreeNode({ task, isSupervisorTask, onSelect, depth, fetchSubtasks }: Tr P{task.priority} )} + + {/* Open in full page button */} + e.stopPropagation()} + className="font-mono text-[10px] text-[#555] opacity-0 group-hover:opacity-100 hover:text-[#75aafc] transition-all" + title="Open task page" + > + ↗ +
{/* Children */} -- cgit v1.2.3