@parhelia/core 0.1.12889 → 0.1.12890

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/agents-view/AgentCard.js +2 -7
  2. package/dist/agents-view/AgentCard.js.map +1 -1
  3. package/dist/agents-view/AgentGalleryCard.js +2 -3
  4. package/dist/agents-view/AgentGalleryCard.js.map +1 -1
  5. package/dist/agents-view/AgentProfileIcon.d.ts +9 -0
  6. package/dist/agents-view/AgentProfileIcon.js +28 -0
  7. package/dist/agents-view/AgentProfileIcon.js.map +1 -0
  8. package/dist/agents-view/AgentsView.d.ts +6 -1
  9. package/dist/agents-view/AgentsView.js +4 -4
  10. package/dist/agents-view/AgentsView.js.map +1 -1
  11. package/dist/agents-view/DateAgentsGroup.js +1 -1
  12. package/dist/agents-view/DateAgentsGroup.js.map +1 -1
  13. package/dist/agents-view/ProfileAgentsGroup.js +2 -5
  14. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  15. package/dist/config/config.js +4 -3
  16. package/dist/config/config.js.map +1 -1
  17. package/dist/editor/GlobalMenuBar.js +2 -1
  18. package/dist/editor/GlobalMenuBar.js.map +1 -1
  19. package/dist/editor/MainLayout.js +11 -9
  20. package/dist/editor/MainLayout.js.map +1 -1
  21. package/dist/editor/WorkspaceTitleSwitcher.d.ts +5 -0
  22. package/dist/editor/WorkspaceTitleSwitcher.js +86 -0
  23. package/dist/editor/WorkspaceTitleSwitcher.js.map +1 -0
  24. package/dist/editor/ai/Agents.js +155 -43
  25. package/dist/editor/ai/Agents.js.map +1 -1
  26. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
  27. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js.map +1 -1
  28. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +3 -3
  29. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
  30. package/dist/editor/ai/terminal/components/AgentPromptComposer.d.ts +2 -1
  31. package/dist/editor/ai/terminal/components/AgentPromptComposer.js +5 -2
  32. package/dist/editor/ai/terminal/components/AgentPromptComposer.js.map +1 -1
  33. package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +2 -1
  34. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +5 -3
  35. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
  36. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +3 -1
  37. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  38. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +2 -1
  39. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
  40. package/dist/editor/bridge/protocol.d.ts +0 -5
  41. package/dist/editor/bridge/protocol.js.map +1 -1
  42. package/dist/editor/client/EditorShell.js +14 -7
  43. package/dist/editor/client/EditorShell.js.map +1 -1
  44. package/dist/editor/client/pageModelBuilder.d.ts +1 -0
  45. package/dist/editor/client/pageModelBuilder.js +22 -13
  46. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  47. package/dist/editor/content-tree/IndicatorSettings.js +3 -2
  48. package/dist/editor/content-tree/IndicatorSettings.js.map +1 -1
  49. package/dist/editor/menubar/ItemLanguageVersion.js +3 -14
  50. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  51. package/dist/editor/menubar/VersionSelector.d.ts +3 -2
  52. package/dist/editor/menubar/VersionSelector.js +28 -12
  53. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  54. package/dist/editor/notifications/NotificationItem.js +3 -2
  55. package/dist/editor/notifications/NotificationItem.js.map +1 -1
  56. package/dist/editor/notifications/watchEventOptions.js +3 -2
  57. package/dist/editor/notifications/watchEventOptions.js.map +1 -1
  58. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +8 -2
  59. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  60. package/dist/editor/page-viewer/PageViewerFrame.js +67 -0
  61. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  62. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +3 -2
  63. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  64. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +3 -2
  65. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -1
  66. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -2
  67. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
  68. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +3 -2
  69. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
  70. package/dist/editor/tree-indicators/GutterColumns.js +3 -2
  71. package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
  72. package/dist/editor/ui/Icons.js +1 -1
  73. package/dist/editor/ui/Icons.js.map +1 -1
  74. package/dist/editor/ui/SimpleTabs.d.ts +2 -1
  75. package/dist/editor/ui/SimpleTabs.js +23 -5
  76. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  77. package/dist/editor/ui/Splitter.js +120 -3
  78. package/dist/editor/ui/Splitter.js.map +1 -1
  79. package/dist/editor/ui/splitterResizeEvent.d.ts +7 -0
  80. package/dist/editor/ui/splitterResizeEvent.js +6 -0
  81. package/dist/editor/ui/splitterResizeEvent.js.map +1 -1
  82. package/dist/revision.d.ts +2 -2
  83. package/dist/revision.js +2 -2
  84. package/dist/splash-screen/ModernSplashScreen.js +20 -11
  85. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  86. package/dist/task-board/TaskBoardWorkspace.js +112 -132
  87. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  88. package/dist/task-board/components/CreateTaskDialog.js +1 -1
  89. package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
  90. package/dist/task-board/components/ProjectDashboard.d.ts +12 -22
  91. package/dist/task-board/components/ProjectDashboard.js +120 -108
  92. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  93. package/dist/task-board/components/ProjectOverviewContent.js +3 -0
  94. package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
  95. package/dist/task-board/components/ProjectPropertiesPanel.d.ts +2 -0
  96. package/dist/task-board/components/ProjectPropertiesPanel.js +7 -4
  97. package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
  98. package/dist/task-board/components/ProjectSettingsDialog.d.ts +16 -0
  99. package/dist/task-board/components/ProjectSettingsDialog.js +55 -47
  100. package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
  101. package/dist/task-board/components/TaskAgentPanel.js +6 -5
  102. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  103. package/dist/task-board/components/TaskAssigneePicker.js +3 -2
  104. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  105. package/dist/task-board/components/TaskAttachmentsSection.js +1 -1
  106. package/dist/task-board/components/TaskAttachmentsSection.js.map +1 -1
  107. package/dist/task-board/components/TaskBoardHomeView.d.ts +1 -21
  108. package/dist/task-board/components/TaskBoardHomeView.js +18 -155
  109. package/dist/task-board/components/TaskBoardHomeView.js.map +1 -1
  110. package/dist/task-board/components/TaskBoardProjectListSidebar.js +74 -12
  111. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  112. package/dist/task-board/components/TaskBoardTitlebar.js +9 -52
  113. package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
  114. package/dist/task-board/components/TaskCard.js +5 -13
  115. package/dist/task-board/components/TaskCard.js.map +1 -1
  116. package/dist/task-board/components/TaskRow.js +3 -2
  117. package/dist/task-board/components/TaskRow.js.map +1 -1
  118. package/dist/task-board/taskBoardNavStore.d.ts +0 -2
  119. package/dist/task-board/taskBoardNavStore.js +0 -2
  120. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  121. package/dist/task-board/views/DependencyGraphView.js +3 -2
  122. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  123. package/dist/task-board/views/KanbanView.js +161 -38
  124. package/dist/task-board/views/KanbanView.js.map +1 -1
  125. package/dist/task-board/views/ListView.js +1 -2
  126. package/dist/task-board/views/ListView.js.map +1 -1
  127. package/dist/task-board/views/WizardView.d.ts +2 -0
  128. package/dist/task-board/views/WizardView.js +7 -4
  129. package/dist/task-board/views/WizardView.js.map +1 -1
  130. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState, } fr
3
3
  import { toast } from "sonner";
4
4
  import { cn } from "../lib/utils";
5
5
  import { Splitter } from "../editor/ui/Splitter";
6
- import { deleteProject, getExecutionState, getGraphLayout, getProject, getProjects, getTasks, getMyTasks, getDependencies, restartProject, runOrchestrator, triggerPlanning, updateProject, updateTask, } from "./services/taskService";
6
+ import { deleteProject, getExecutionState, getGraphLayout, getProject, getProjects, getTasks, getMyTasks, getDependencies, restartProject, runOrchestrator, triggerPlanning, updateTask, } from "./services/taskService";
7
7
  import { loadAiProfiles } from "../editor/services/aiService";
8
8
  import { useEditContext } from "../editor/client/editContext";
9
9
  import { LicenseFeatures, useFeature } from "../licensing";
@@ -13,10 +13,11 @@ import { WizardView } from "./views/WizardView";
13
13
  import { SimpleTabs } from "../editor/ui/SimpleTabs";
14
14
  import { TaskDetailPanel, } from "./components/TaskDetailPanel";
15
15
  import { TaskAgentPanel } from "./components/TaskAgentPanel";
16
- import { ProjectDashboard, } from "./components/ProjectDashboard";
16
+ import { ProjectDashboard, ProjectKpisPanel, } from "./components/ProjectDashboard";
17
17
  import { CreateTaskDialog } from "./components/CreateTaskDialog";
18
18
  import { CreateProjectDialog } from "./components/CreateProjectDialog";
19
- import { ProjectSettingsDialog } from "./components/ProjectSettingsDialog";
19
+ import { ProjectSettingsPanel } from "./components/ProjectSettingsDialog";
20
+ import { ProjectPropertiesPanel } from "./components/ProjectPropertiesPanel";
20
21
  import { TaskBoardHomeView } from "./components/TaskBoardHomeView";
21
22
  import { EditorSlotContextProvider } from "../editor/views/editorSlotContext";
22
23
  import { SingleEditView } from "../editor/views/SingleEditView";
@@ -30,8 +31,7 @@ import { normalizeTaskStatus } from "./taskStatus";
30
31
  import { getTaskExecutionDisplay, } from "./taskExecutionStatus";
31
32
  import { indexTaskExecutionRecords, overlayTaskExecutionList, } from "./taskExecutionRecords";
32
33
  import { WizardCommunicationCenter } from "./components/WizardCommunicationCenter";
33
- import { Button } from "../components/ui/button";
34
- import { Loader2, Plus } from "lucide-react";
34
+ import { Loader2 } from "lucide-react";
35
35
  import { MainContentTree } from "../editor/sidebar/MainContentTree";
36
36
  import { useTaskBoardAgentPanelState } from "./useTaskBoardAgentPanelState";
37
37
  const DependencyGraphView = lazy(() => import("./views/DependencyGraphView").then((module) => ({
@@ -48,8 +48,19 @@ function TaskboardPreviewEditor() {
48
48
  const TASKBOARD_PROJECT_QUERY_KEY = "tbProjectId";
49
49
  const TASKBOARD_TASK_QUERY_KEY = "tbTaskId";
50
50
  const TASKBOARD_VIEW_QUERY_KEY = "tbView";
51
- const TASKBOARD_WIZARD_QUERY_KEY = "tbWizard";
52
51
  const WS_REFRESH_DELAY_MS = 500;
52
+ const TASKBOARD_VIEW_TAB_IDS = [
53
+ "overview",
54
+ "kanban",
55
+ "list",
56
+ "graph",
57
+ "kpis",
58
+ "settings",
59
+ "properties",
60
+ ];
61
+ function getTaskBoardViewTabIndex(view) {
62
+ return TASKBOARD_VIEW_TAB_IDS.indexOf(view);
63
+ }
53
64
  function getInitialQueryValue(queryKey) {
54
65
  if (typeof window === "undefined")
55
66
  return null;
@@ -58,15 +69,14 @@ function getInitialQueryValue(queryKey) {
58
69
  }
59
70
  function getInitialViewTabIndex() {
60
71
  const view = getInitialQueryValue(TASKBOARD_VIEW_QUERY_KEY)?.toLowerCase();
61
- if (view === "list")
62
- return 1;
63
- if (view === "graph")
64
- return 2;
65
- return 0;
66
- }
67
- function getInitialWizardMode() {
68
- const value = getInitialQueryValue(TASKBOARD_WIZARD_QUERY_KEY)?.toLowerCase();
69
- return value === "true" || value === "1";
72
+ const index = TASKBOARD_VIEW_TAB_IDS.indexOf(view);
73
+ if (index < 0) {
74
+ const legacyWizardMode = getInitialQueryValue("tbWizard")?.toLowerCase();
75
+ if (legacyWizardMode === "true" || legacyWizardMode === "1") {
76
+ return getTaskBoardViewTabIndex("overview");
77
+ }
78
+ }
79
+ return index >= 0 ? index : getTaskBoardViewTabIndex("kanban");
70
80
  }
71
81
  function getTaskBoardStateFromUrl() {
72
82
  const projectId = getInitialQueryValue(TASKBOARD_PROJECT_QUERY_KEY);
@@ -74,7 +84,6 @@ function getTaskBoardStateFromUrl() {
74
84
  projectId,
75
85
  taskId: projectId ? getInitialQueryValue(TASKBOARD_TASK_QUERY_KEY) : null,
76
86
  activeTab: getInitialViewTabIndex(),
77
- isWizardMode: getInitialWizardMode(),
78
87
  };
79
88
  }
80
89
  function getTaskExecutionRecordById(recordsByTaskId, taskId) {
@@ -145,7 +154,6 @@ export function TaskBoardWorkspace() {
145
154
  const currentItemDescriptor = editContext?.currentItemDescriptor;
146
155
  const [projects, setProjects] = useState([]);
147
156
  const [mobileActiveTab, setMobileActiveTab] = useState(0);
148
- const [homeActiveTab, setHomeActiveTab] = useState(0);
149
157
  const [selectedProjectId, setSelectedProjectId] = useState(() => getInitialQueryValue(TASKBOARD_PROJECT_QUERY_KEY));
150
158
  const [tasks, setTasks] = useState([]);
151
159
  const [isTasksLoading, setIsTasksLoading] = useState(false);
@@ -155,11 +163,15 @@ export function TaskBoardWorkspace() {
155
163
  const [selectedTaskId, setSelectedTaskId] = useState(() => getInitialQueryValue(TASKBOARD_TASK_QUERY_KEY));
156
164
  const [selectedTaskSource, setSelectedTaskSource] = useState(() => getInitialQueryValue(TASKBOARD_TASK_QUERY_KEY) ? "system" : null);
157
165
  const [activeTab, setActiveTab] = useState(() => getInitialViewTabIndex());
158
- const [isWizardMode, setIsWizardMode] = useState(() => getInitialWizardMode());
166
+ const activeViewTabId = TASKBOARD_VIEW_TAB_IDS[activeTab] ?? "kanban";
167
+ const isOverviewView = activeViewTabId === "overview";
168
+ const isListView = activeViewTabId === "list";
169
+ const isGraphView = activeViewTabId === "graph";
170
+ const isKpisView = activeViewTabId === "kpis";
171
+ const isSettingsView = activeViewTabId === "settings";
172
+ const isPropertiesView = activeViewTabId === "properties";
159
173
  const [createDialogOpen, setCreateDialogOpen] = useState(false);
160
174
  const [createProjectOpen, setCreateProjectOpen] = useState(false);
161
- const [settingsProjectId, setSettingsProjectId] = useState(null);
162
- const [savingProjectStatus, setSavingProjectStatus] = useState(false);
163
175
  const [runningOrchestrator, setRunningOrchestrator] = useState(false);
164
176
  const [showAllProjects, setShowAllProjects] = useState(false);
165
177
  const [isProjectsLoading, setIsProjectsLoading] = useState(false);
@@ -219,22 +231,11 @@ export function TaskBoardWorkspace() {
219
231
  const previousTaskStatusesRef = useRef({});
220
232
  const previousWizardAttentionSignatureRef = useRef("");
221
233
  const autoSelectedProjectIdsRef = useRef(new Set());
222
- const userFirstName = useMemo(() => {
223
- const user = editContext?.user;
224
- if (!user)
225
- return "";
226
- if (user.fullName) {
227
- return user.fullName.trim().split(/\s+/)[0] ?? "";
228
- }
229
- const namePart = user.name?.split("\\").pop() ?? user.name ?? "";
230
- return namePart;
231
- }, [editContext?.user]);
232
234
  const syncTaskBoardStateFromUrl = useCallback(() => {
233
235
  const nextState = getTaskBoardStateFromUrl();
234
236
  setSelectedProjectId(nextState.projectId);
235
237
  setTaskSelection(nextState.taskId, { source: "system" });
236
238
  setActiveTab(nextState.activeTab);
237
- setIsWizardMode(nextState.isWizardMode);
238
239
  setWizardForceOverview(false);
239
240
  }, [setTaskSelection]);
240
241
  const isProjectWithinSelectedTree = useCallback((projectId, currentProjectId) => {
@@ -322,7 +323,6 @@ export function TaskBoardWorkspace() {
322
323
  }, [editContext?.user?.name]);
323
324
  const tasksWithDisplayAssignees = useMemo(() => addAgentDisplayNames(overlayTaskExecutionList(tasks, executionRecordsByTaskId), agentProfileTitlesById), [tasks, executionRecordsByTaskId, agentProfileTitlesById]);
324
325
  const selectedProject = useMemo(() => projects.find((p) => p.project.projectId === selectedProjectId) ?? null, [projects, selectedProjectId]);
325
- const settingsProject = useMemo(() => projects.find((p) => p.project.projectId === settingsProjectId) ?? null, [projects, settingsProjectId]);
326
326
  const selectedProjectTaskCounts = useMemo(() => buildTaskCounts(tasksWithDisplayAssignees), [tasksWithDisplayAssignees]);
327
327
  const directSubprojects = useMemo(() => selectedProjectId
328
328
  ? projects
@@ -360,9 +360,13 @@ export function TaskBoardWorkspace() {
360
360
  }
361
361
  return merged;
362
362
  }, [executionRecordsByTaskId, subprojectExecutionRecordsByProjectId]);
363
- const taskSelectionUniverse = useMemo(() => isWizardMode
363
+ const taskSelectionUniverse = useMemo(() => isOverviewView
364
364
  ? wizardTasksWithDisplayAssignees
365
- : tasksWithDisplayAssignees, [isWizardMode, wizardTasksWithDisplayAssignees, tasksWithDisplayAssignees]);
365
+ : tasksWithDisplayAssignees, [
366
+ isOverviewView,
367
+ wizardTasksWithDisplayAssignees,
368
+ tasksWithDisplayAssignees,
369
+ ]);
366
370
  const selectedProjectCumulativeCostUsed = useMemo(() => {
367
371
  if (!selectedProjectId)
368
372
  return 0;
@@ -445,14 +449,15 @@ export function TaskBoardWorkspace() {
445
449
  selectedProject?.permission === "Editor";
446
450
  const canEditTasks = canCreate;
447
451
  const viewTabs = useMemo(() => [
452
+ { id: "overview", label: "Task overview", content: null },
448
453
  { id: "kanban", label: "Kanban", content: null },
449
454
  { id: "list", label: "List", content: null },
450
455
  { id: "graph", label: "Graph", content: null },
456
+ { id: "kpis", label: "KPIs", content: null },
457
+ { id: "settings", label: "Settings", content: null },
458
+ { id: "properties", label: "Properties", content: null },
451
459
  ], []);
452
- const viewTabIds = useMemo(() => ["kanban", "list", "graph"], []);
453
- const isListView = viewTabIds[activeTab] === "list";
454
- const isGraphView = viewTabIds[activeTab] === "graph";
455
- const sharedViewSwitcher = useMemo(() => (_jsxs("div", { className: "flex items-center justify-end gap-2", children: [_jsx(SimpleTabs, { tabs: viewTabs, activeTab: activeTab, setActiveTab: setActiveTab, hideContent: true, className: "bg-neutral-grey-5/50 rounded-lg border-0 p-1", testId: "taskboard-view-switcher" }), _jsxs(Button, { size: "sm", onClick: () => setCreateDialogOpen(true), disabled: !canEditTasks, className: "h-8 px-3", "data-testid": "taskboard-create-task-button", children: [_jsx(Plus, { className: "h-4 w-4 sm:mr-1.5" }), _jsx("span", { className: "hidden sm:inline", children: "New Task" })] })] })), [activeTab, canEditTasks, viewTabs]);
460
+ const sharedViewSwitcher = useMemo(() => (_jsx("div", { className: "border-border-default mt-[18px] border-b", children: _jsx(SimpleTabs, { tabs: viewTabs, activeTab: activeTab, setActiveTab: setActiveTab, hideContent: true, variant: "large", className: "gap-8", tabClassName: "px-2 pt-3 pb-[9px] text-sm", testId: "taskboard-view-switcher" }) })), [activeTab, viewTabs]);
456
461
  const handleSelectProject = useCallback((projectId) => {
457
462
  setSelectedProjectId((previousProjectId) => {
458
463
  if (previousProjectId !== projectId) {
@@ -595,10 +600,10 @@ export function TaskBoardWorkspace() {
595
600
  }
596
601
  }, []);
597
602
  useEffect(() => {
598
- if (!isWizardMode) {
603
+ if (!isOverviewView) {
599
604
  clearWizardCloseTransitionTimeout();
600
605
  }
601
- }, [isWizardMode, clearWizardCloseTransitionTimeout]);
606
+ }, [isOverviewView, clearWizardCloseTransitionTimeout]);
602
607
  useEffect(() => {
603
608
  clearWizardCloseTransitionTimeout();
604
609
  }, [selectedProjectId, clearWizardCloseTransitionTimeout]);
@@ -674,7 +679,7 @@ export function TaskBoardWorkspace() {
674
679
  if (typeof window === "undefined")
675
680
  return;
676
681
  const current = new URLSearchParams(window.location.search);
677
- const view = viewTabIds[activeTab] ?? "kanban";
682
+ const view = TASKBOARD_VIEW_TAB_IDS[activeTab] ?? "kanban";
678
683
  if (selectedProjectId) {
679
684
  current.set(TASKBOARD_PROJECT_QUERY_KEY, selectedProjectId);
680
685
  }
@@ -688,12 +693,7 @@ export function TaskBoardWorkspace() {
688
693
  current.delete(TASKBOARD_TASK_QUERY_KEY);
689
694
  }
690
695
  current.set(TASKBOARD_VIEW_QUERY_KEY, view);
691
- if (isWizardMode) {
692
- current.set(TASKBOARD_WIZARD_QUERY_KEY, "true");
693
- }
694
- else {
695
- current.delete(TASKBOARD_WIZARD_QUERY_KEY);
696
- }
696
+ current.delete("tbWizard");
697
697
  const browserPathname = window.location.pathname;
698
698
  const queryString = current.toString();
699
699
  const newUrl = queryString
@@ -703,7 +703,7 @@ export function TaskBoardWorkspace() {
703
703
  if (newUrl !== oldUrl) {
704
704
  window.history.replaceState(null, "", newUrl);
705
705
  }
706
- }, [selectedProjectId, selectedTaskId, activeTab, isWizardMode, viewTabIds]);
706
+ }, [selectedProjectId, selectedTaskId, activeTab]);
707
707
  useEffect(() => {
708
708
  const handlePopState = () => {
709
709
  syncTaskBoardStateFromUrl();
@@ -807,13 +807,13 @@ export function TaskBoardWorkspace() {
807
807
  nextExecutionByProjectId[projectId] = executionByTaskId;
808
808
  }
809
809
  setSubprojectTaskCounts(nextCounts);
810
- setSubprojectTasksByProjectId(isWizardMode ? nextTasksByProjectId : {});
811
- setSubprojectExecutionRecordsByProjectId(isWizardMode ? nextExecutionByProjectId : {});
810
+ setSubprojectTasksByProjectId(isOverviewView ? nextTasksByProjectId : {});
811
+ setSubprojectExecutionRecordsByProjectId(isOverviewView ? nextExecutionByProjectId : {});
812
812
  }
813
813
  finally {
814
814
  setSubprojectCountsLoading(false);
815
815
  }
816
- }, [directSubprojects, isWizardMode, selectedProjectId]);
816
+ }, [directSubprojects, isOverviewView, selectedProjectId]);
817
817
  // If a project only has a single task, auto-select it once when loading.
818
818
  // Do not auto-reselect after the user explicitly closes task details.
819
819
  useEffect(() => {
@@ -843,7 +843,7 @@ export function TaskBoardWorkspace() {
843
843
  // switch away when another subproject also gets Questions (wizardAttentionState
844
844
  // would pick a different task and we'd lose the questionnaire to agent mismatch).
845
845
  useEffect(() => {
846
- if (!isWizardMode)
846
+ if (!isOverviewView)
847
847
  return;
848
848
  if (wizardForceOverview)
849
849
  return;
@@ -860,7 +860,7 @@ export function TaskBoardWorkspace() {
860
860
  return;
861
861
  setWizardPinnedTask(wizardDisplayedTask.taskId, "system");
862
862
  }, [
863
- isWizardMode,
863
+ isOverviewView,
864
864
  wizardForceOverview,
865
865
  selectedTaskId,
866
866
  wizardPinnedTaskId,
@@ -869,7 +869,7 @@ export function TaskBoardWorkspace() {
869
869
  setWizardPinnedTask,
870
870
  ]);
871
871
  useEffect(() => {
872
- if (!isWizardMode)
872
+ if (!isOverviewView)
873
873
  return;
874
874
  if (selectedTaskId)
875
875
  return;
@@ -890,7 +890,7 @@ export function TaskBoardWorkspace() {
890
890
  }
891
891
  setWizardPinnedTaskId(attentionTaskId);
892
892
  }, [
893
- isWizardMode,
893
+ isOverviewView,
894
894
  selectedTaskId,
895
895
  selectedTaskSource,
896
896
  wizardDisplayedExecutionDisplay?.label,
@@ -901,7 +901,7 @@ export function TaskBoardWorkspace() {
901
901
  wizardAttentionState.task?.taskId,
902
902
  ]);
903
903
  useEffect(() => {
904
- if (!isWizardMode)
904
+ if (!isOverviewView)
905
905
  return;
906
906
  if (selectedTaskSource === "user")
907
907
  return;
@@ -923,23 +923,23 @@ export function TaskBoardWorkspace() {
923
923
  setTaskSelection(null, { pinInWizard: false });
924
924
  }, [
925
925
  findNextAttentionTaskId,
926
- isWizardMode,
926
+ isOverviewView,
927
927
  selectedTask,
928
928
  selectedTaskSource,
929
929
  setTaskSelection,
930
930
  ]);
931
931
  useEffect(() => {
932
- if (isWizardMode)
932
+ if (isOverviewView)
933
933
  return;
934
934
  if (!wizardPinnedTaskId)
935
935
  return;
936
936
  setWizardPinnedTask(null);
937
- }, [isWizardMode, setWizardPinnedTask, wizardPinnedTaskId]);
937
+ }, [isOverviewView, setWizardPinnedTask, wizardPinnedTaskId]);
938
938
  useEffect(() => {
939
- if (!isWizardMode && wizardForceOverview) {
939
+ if (!isOverviewView && wizardForceOverview) {
940
940
  setWizardForceOverview(false);
941
941
  }
942
- }, [isWizardMode, wizardForceOverview]);
942
+ }, [isOverviewView, wizardForceOverview]);
943
943
  useEffect(() => {
944
944
  setWizardPinnedTask(null);
945
945
  setWizardForceOverview(false);
@@ -1297,32 +1297,6 @@ export function TaskBoardWorkspace() {
1297
1297
  setTaskSelection,
1298
1298
  tasks,
1299
1299
  ]);
1300
- const handleProjectStatusChange = useCallback(async (status) => {
1301
- if (!selectedProject)
1302
- return;
1303
- if (selectedProject.permission !== "Owner")
1304
- return;
1305
- if (selectedProject.project.status === status)
1306
- return;
1307
- setSavingProjectStatus(true);
1308
- try {
1309
- const result = await updateProject({
1310
- projectId: selectedProject.project.projectId,
1311
- title: selectedProject.project.title,
1312
- description: selectedProject.project.description ?? "",
1313
- costLimit: selectedProject.project.costLimit ?? null,
1314
- status,
1315
- });
1316
- if (result.type !== "success") {
1317
- toast.error(result.summary || "Failed to update project status");
1318
- return;
1319
- }
1320
- await refreshProjects();
1321
- }
1322
- finally {
1323
- setSavingProjectStatus(false);
1324
- }
1325
- }, [selectedProject, refreshProjects]);
1326
1300
  const handleSelectMyTask = useCallback((task) => {
1327
1301
  handleSelectProject(task.projectId);
1328
1302
  setTaskSelection(task.taskId, { source: "user" });
@@ -1352,7 +1326,6 @@ export function TaskBoardWorkspace() {
1352
1326
  : "Select a project to get started",
1353
1327
  permissionLabel: selectedProject?.permission ?? "No project selected",
1354
1328
  activeTab,
1355
- isWizardMode,
1356
1329
  isAdministrator,
1357
1330
  showAllProjects: isAdministrator && showAllProjects,
1358
1331
  isProjectsLoading,
@@ -1379,7 +1352,11 @@ export function TaskBoardWorkspace() {
1379
1352
  onSetActiveTab: setActiveTab,
1380
1353
  onCreateProject: () => setCreateProjectOpen(true),
1381
1354
  onOpenProjectTemplates: handleOpenProjectTemplates,
1382
- onOpenProjectSettings: (projectId) => setSettingsProjectId(projectId),
1355
+ onOpenProjectSettings: (projectId) => {
1356
+ handleSelectProject(projectId);
1357
+ setWizardForceOverview(false);
1358
+ setActiveTab(getTaskBoardViewTabIndex("settings"));
1359
+ },
1383
1360
  onDeleteProject: (projectId, title) => {
1384
1361
  const runDelete = async () => {
1385
1362
  const result = await deleteProject(projectId);
@@ -1443,7 +1420,6 @@ export function TaskBoardWorkspace() {
1443
1420
  setShowAllProjects(enabled);
1444
1421
  void refreshProjects({ includeAll: isAdministrator && enabled });
1445
1422
  },
1446
- onToggleWizardMode: (enabled) => setIsWizardMode(enabled),
1447
1423
  onCreateTask: () => setCreateDialogOpen(true),
1448
1424
  onRunOrchestrator: handleRunOrchestrator,
1449
1425
  });
@@ -1452,7 +1428,6 @@ export function TaskBoardWorkspace() {
1452
1428
  selectedProject?.project.description,
1453
1429
  selectedProject?.permission,
1454
1430
  activeTab,
1455
- isWizardMode,
1456
1431
  isAdministrator,
1457
1432
  showAllProjects,
1458
1433
  isProjectsLoading,
@@ -1735,7 +1710,6 @@ export function TaskBoardWorkspace() {
1735
1710
  setTaskSelection(null);
1736
1711
  }
1737
1712
  }, [
1738
- isWizardMode,
1739
1713
  selectedTaskId,
1740
1714
  selectedTaskSource,
1741
1715
  setTaskSelection,
@@ -1814,28 +1788,40 @@ export function TaskBoardWorkspace() {
1814
1788
  return (_jsx("div", { className: "border-border-default bg-neutral-grey-5/70 flex h-full min-h-[240px] items-center justify-center rounded-lg border border-dashed", "data-testid": "taskboard-project-loading-state", children: _jsxs("div", { className: "text-muted-foreground flex flex-col items-center gap-3 text-sm", children: [_jsx(Loader2, { className: "h-6 w-6 animate-spin" }), _jsx("div", { children: "Loading project..." })] }) }));
1815
1789
  }
1816
1790
  if (!selectedProjectId || (!selectedProject && !isProjectsLoading)) {
1817
- return (_jsx(TaskBoardHomeView, { nav: nav, activeTab: homeActiveTab, setActiveTab: setHomeActiveTab, userFirstName: userFirstName }));
1791
+ return _jsx(TaskBoardHomeView, { nav: nav });
1818
1792
  }
1819
- if (isWizardMode) {
1820
- return (_jsx(WizardView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, projectTasksLoading: isTasksLoading, dependencies: dependencies, subprojectTaskLists: wizardSubprojectTaskLists, subprojectTasksLoading: subprojectCountsLoading, selectedTaskId: wizardDisplayedTask?.taskId ?? null, onSelectTask: (id) => {
1821
- setWizardForceOverview(false);
1822
- setTaskSelection(id, { source: "user", pinInWizard: true });
1823
- }, projectTitle: selectedProject?.project.title ?? "No project selected", projectDescription: selectedProject?.project.description, projectCostUsed: selectedProjectCumulativeCostUsed, projectCostLimit: selectedProject?.project.costLimit ?? null, canEditProperties: selectedProject?.permission === "Owner", communicationPanel: wizardCommunicationPanel }));
1793
+ if (isOverviewView) {
1794
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx("div", { className: "min-h-0 flex-1", children: _jsx(WizardView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, projectTasksLoading: isTasksLoading, dependencies: dependencies, subprojectTaskLists: wizardSubprojectTaskLists, subprojectTasksLoading: subprojectCountsLoading, selectedTaskId: wizardDisplayedTask?.taskId ?? null, onSelectTask: (id) => {
1795
+ setWizardForceOverview(false);
1796
+ setTaskSelection(id, { source: "user", pinInWizard: true });
1797
+ }, projectTitle: selectedProject?.project.title ?? "No project selected", projectDescription: selectedProject?.project.description, projectCostUsed: selectedProjectCumulativeCostUsed, projectCostLimit: selectedProject?.project.costLimit ?? null, canEditProperties: selectedProject?.permission === "Owner", showProperties: false, showCost: false, communicationPanel: wizardCommunicationPanel }) })] }));
1798
+ }
1799
+ if (isSettingsView) {
1800
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx(ProjectSettingsPanel, { projectId: selectedProjectId, selectedProject: selectedProject, projects: projects, canOpenSourceTemplate: isAdministrator, onOpenSourceTemplate: handleOpenSourceTemplate, onChanged: async () => {
1801
+ await refreshProjects();
1802
+ await refreshVisibleTaskData();
1803
+ } })] }));
1804
+ }
1805
+ if (isKpisView) {
1806
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx(ProjectKpisPanel, { selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, selectedProjectAttention: selectedProject?.overview?.attention, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts })] }));
1807
+ }
1808
+ if (isPropertiesView) {
1809
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true), showCreateTaskButton: false }), sharedViewSwitcher, _jsx(ProjectPropertiesPanel, { projectId: selectedProjectId, canEdit: selectedProject?.permission === "Owner", defaultExpanded: true, showHeader: false, className: "border-border-default rounded-md border bg-white p-4" })] }));
1824
1810
  }
1825
1811
  if (isListView) {
1826
- return (_jsxs("div", { className: "grid gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectStatus: selectedProject?.project.status, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, canEditProjectStatus: selectedProject?.permission === "Owner", savingProjectStatus: savingProjectStatus, onStatusChange: handleProjectStatusChange, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, loading: subprojectCountsLoading, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canEditProperties: selectedProject?.permission === "Owner", selectedProjectSourceTemplateId: selectedProject?.project.sourceProjectTemplateId ?? null, selectedProjectSourceTemplateName: selectedProject?.project.sourceProjectTemplateName ?? null, canOpenSourceTemplate: isAdministrator, onOpenSourceTemplate: handleOpenSourceTemplate }), sharedViewSwitcher, _jsx(ListView, { tasks: tasksWithDisplayAssignees, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), selectedTaskId: selectedTaskId, onTasksChanged: () => {
1812
+ return (_jsxs("div", { className: "grid gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx(ListView, { tasks: tasksWithDisplayAssignees, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), selectedTaskId: selectedTaskId, onTasksChanged: () => {
1827
1813
  void refreshVisibleTaskData();
1828
1814
  }, projectId: selectedProjectId, permission: selectedProject?.permission })] }));
1829
1815
  }
1830
1816
  if (isGraphView) {
1831
- return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectStatus: selectedProject?.project.status, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, canEditProjectStatus: selectedProject?.permission === "Owner", savingProjectStatus: savingProjectStatus, onStatusChange: handleProjectStatusChange, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, loading: subprojectCountsLoading, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canEditProperties: selectedProject?.permission === "Owner", selectedProjectSourceTemplateId: selectedProject?.project.sourceProjectTemplateId ?? null, selectedProjectSourceTemplateName: selectedProject?.project.sourceProjectTemplateName ?? null, canOpenSourceTemplate: isAdministrator, onOpenSourceTemplate: handleOpenSourceTemplate }), sharedViewSwitcher, _jsx("div", { className: "min-h-0 flex-1", children: _jsx(Suspense, { fallback: _jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center text-sm", children: "Loading dependency graph..." }), children: _jsx(DependencyGraphView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, dependencies: dependencies, miniMapWidth: 160, miniMapHeight: 120, orientation: "horizontal", autoLayoutStrategy: "hierarchy", showOrientationToggle: true, savedLayout: graphLayout, selectedTaskId: selectedTaskId, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), permission: selectedProject?.permission, onLayoutSaved: (layout) => setGraphLayout(layout && selectedProjectId
1817
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx("div", { className: "min-h-0 flex-1", children: _jsx(Suspense, { fallback: _jsx("div", { className: "text-muted-foreground flex h-full items-center justify-center text-sm", children: "Loading dependency graph..." }), children: _jsx(DependencyGraphView, { projectId: selectedProjectId, tasks: tasksWithDisplayAssignees, dependencies: dependencies, miniMapWidth: 160, miniMapHeight: 120, orientation: "horizontal", autoLayoutStrategy: "hierarchy", showOrientationToggle: true, savedLayout: graphLayout, selectedTaskId: selectedTaskId, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), permission: selectedProject?.permission, onLayoutSaved: (layout) => setGraphLayout(layout && selectedProjectId
1832
1818
  ? {
1833
1819
  projectId: selectedProjectId,
1834
1820
  ...layout,
1835
1821
  }
1836
1822
  : null) }) }) })] }));
1837
1823
  }
1838
- return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectStatus: selectedProject?.project.status, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, canEditProjectStatus: selectedProject?.permission === "Owner", savingProjectStatus: savingProjectStatus, onStatusChange: handleProjectStatusChange, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, loading: subprojectCountsLoading, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canEditProperties: selectedProject?.permission === "Owner", selectedProjectSourceTemplateId: selectedProject?.project.sourceProjectTemplateId ?? null, selectedProjectSourceTemplateName: selectedProject?.project.sourceProjectTemplateName ?? null, canOpenSourceTemplate: isAdministrator, onOpenSourceTemplate: handleOpenSourceTemplate }), sharedViewSwitcher, _jsx(KanbanView, { tasks: tasksWithDisplayAssignees, dependencies: dependencies, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), selectedTaskId: selectedTaskId, onTasksChanged: () => {
1824
+ return (_jsxs("div", { className: "flex h-full min-h-0 min-w-0 flex-col gap-3", children: [_jsx(ProjectDashboard, { projectId: selectedProjectId, selectedProjectTitle: selectedProject?.project.title ?? "No project selected", selectedProjectDescription: selectedProject?.project.description, selectedProjectCostUsed: selectedProjectCumulativeCostUsed, selectedProjectCostLimit: selectedProject?.project.costLimit ?? null, selectedProjectTaskCounts: selectedProjectTaskCounts, subprojects: directSubprojects, taskCountsByProjectId: subprojectTaskCounts, parentProjectId: parentProject?.project.projectId ?? null, parentProjectTitle: parentProject?.project.title ?? null, onSelectProject: handleSelectProject, canCreateTask: canEditTasks, onCreateTask: () => setCreateDialogOpen(true) }), sharedViewSwitcher, _jsx(KanbanView, { tasks: tasksWithDisplayAssignees, dependencies: dependencies, onSelectTask: (id) => setTaskSelection(id, { source: "user" }), selectedTaskId: selectedTaskId, onTasksChanged: () => {
1839
1825
  void refreshVisibleTaskData();
1840
1826
  }, projectId: selectedProjectId, permission: selectedProject?.permission })] }));
1841
1827
  }, [
@@ -1843,12 +1829,15 @@ export function TaskBoardWorkspace() {
1843
1829
  selectedProjectId,
1844
1830
  selectedProject,
1845
1831
  isProjectsLoading,
1846
- isWizardMode,
1832
+ isOverviewView,
1847
1833
  isListView,
1848
1834
  isGraphView,
1835
+ isKpisView,
1836
+ isSettingsView,
1837
+ isPropertiesView,
1838
+ graphLayout,
1839
+ isAdministrator,
1849
1840
  selectedProjectCumulativeCostUsed,
1850
- savingProjectStatus,
1851
- handleProjectStatusChange,
1852
1841
  handleOpenSourceTemplate,
1853
1842
  selectedProjectTaskCounts,
1854
1843
  directSubprojects,
@@ -1858,19 +1847,18 @@ export function TaskBoardWorkspace() {
1858
1847
  parentProject?.project.title,
1859
1848
  handleSelectProject,
1860
1849
  sharedViewSwitcher,
1850
+ projects,
1861
1851
  tasksWithDisplayAssignees,
1862
1852
  dependencies,
1863
1853
  selectedTaskId,
1864
- activeTab,
1865
1854
  canEditTasks,
1866
1855
  nav,
1867
- homeActiveTab,
1868
- userFirstName,
1869
1856
  isTasksLoading,
1870
1857
  wizardSubprojectTaskLists,
1871
1858
  wizardDisplayedTask?.taskId,
1872
1859
  wizardCommunicationPanel,
1873
1860
  setTaskSelection,
1861
+ refreshProjects,
1874
1862
  refreshVisibleTaskData,
1875
1863
  ]);
1876
1864
  const taskDetailAgentLaunch = useMemo(() => {
@@ -1913,6 +1901,7 @@ export function TaskBoardWorkspace() {
1913
1901
  void refreshVisibleTaskData();
1914
1902
  }, onSelectTask: (taskId) => setTaskSelection(taskId, { source: "user" }), onClose: () => setTaskSelection(null), variant: "panel", agentLaunch: taskDetailAgentLaunch })), [
1915
1903
  selectedTaskProject,
1904
+ projects,
1916
1905
  selectedTask,
1917
1906
  taskSelectionUniverse,
1918
1907
  dependencies,
@@ -2035,29 +2024,29 @@ export function TaskBoardWorkspace() {
2035
2024
  const showAgentColumnForSelectedTask = !!selectedProjectId &&
2036
2025
  !shouldHideAgentPanelForSelectedTask &&
2037
2026
  agentPanelMode === "agent";
2038
- if (isWizardMode) {
2039
- const wizardPanels = [
2027
+ if (isOverviewView || isKpisView) {
2028
+ const overviewPanels = [
2040
2029
  {
2041
- name: "wizard-view",
2042
- defaultSize: 70,
2043
- content: (_jsx("div", { className: "bg-neutral-grey-5/50 h-full overflow-x-hidden overflow-y-auto", children: taskBoardContent })),
2030
+ name: "task-list",
2031
+ defaultSize: "auto",
2032
+ content: (_jsx("div", { className: cn("bg-neutral-grey-5/60 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-3 pt-3 md:p-8 md:pt-8 md:pl-10"), children: taskBoardContent })),
2044
2033
  },
2045
2034
  ];
2046
2035
  if (showEditorPanel) {
2047
- wizardPanels.push({
2036
+ overviewPanels.push({
2048
2037
  name: "editor-preview",
2049
- defaultSize: 30,
2038
+ defaultSize: 500,
2050
2039
  content: (_jsx("div", { className: "border-border-default bg-neutral-grey-5 h-full overflow-hidden border-l", children: itemPreviewPanel })),
2051
2040
  });
2052
2041
  }
2053
- return wizardPanels;
2042
+ return overviewPanels;
2054
2043
  }
2055
2044
  if (isListView) {
2056
2045
  const listPanels = [
2057
2046
  {
2058
2047
  name: "task-list",
2059
2048
  defaultSize: "auto",
2060
- content: (_jsx("div", { className: "bg-neutral-grey-5/50 h-full overflow-x-auto overflow-y-auto p-2 pt-2 md:p-4 md:pt-3", children: taskBoardContent })),
2049
+ content: (_jsx("div", { className: "bg-neutral-grey-5/60 h-full overflow-x-auto overflow-y-auto p-3 pt-3 md:p-8 md:pt-8 md:pl-10", children: taskBoardContent })),
2061
2050
  },
2062
2051
  ...buildRightHandPanels(showAgentColumnForSelectedTask),
2063
2052
  ];
@@ -2075,7 +2064,7 @@ export function TaskBoardWorkspace() {
2075
2064
  {
2076
2065
  name: "task-list",
2077
2066
  defaultSize: "auto",
2078
- content: (_jsx("div", { className: cn("bg-neutral-grey-5/50 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-4 pt-3"), children: taskBoardContent })),
2067
+ content: (_jsx("div", { className: cn("bg-neutral-grey-5/60 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-3 pt-3 md:p-8 md:pt-8 md:pl-10"), children: taskBoardContent })),
2079
2068
  },
2080
2069
  ...buildRightHandPanels(showAgentColumnForSelectedTask),
2081
2070
  ];
@@ -2092,7 +2081,7 @@ export function TaskBoardWorkspace() {
2092
2081
  {
2093
2082
  name: "task-list",
2094
2083
  defaultSize: "auto",
2095
- content: (_jsx("div", { className: cn("bg-neutral-grey-5/50 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-4 pt-3"), children: taskBoardContent })),
2084
+ content: (_jsx("div", { className: cn("bg-neutral-grey-5/60 flex h-full min-h-0 flex-col overflow-x-hidden overflow-y-auto", selectedProjectId && "p-3 pt-3 md:p-8 md:pt-8 md:pl-10"), children: taskBoardContent })),
2096
2085
  },
2097
2086
  ...buildRightHandPanels(showAgentColumnForSelectedTask),
2098
2087
  ];
@@ -2105,7 +2094,8 @@ export function TaskBoardWorkspace() {
2105
2094
  }
2106
2095
  return kanbanPanels;
2107
2096
  }, [
2108
- isWizardMode,
2097
+ isOverviewView,
2098
+ isKpisView,
2109
2099
  isListView,
2110
2100
  isGraphView,
2111
2101
  selectedProjectId,
@@ -2133,30 +2123,20 @@ export function TaskBoardWorkspace() {
2133
2123
  ...(showEditorPanel
2134
2124
  ? [{ id: "editor", label: "Editor", content: null }]
2135
2125
  : []),
2136
- ], activeTab: mobileActiveTab, setActiveTab: setMobileActiveTab, hideContent: true, className: "gap-6" }) })), _jsxs("div", { className: "min-h-0 flex-1 overflow-hidden", children: [mobileActiveTab === 0 && (_jsx("div", { className: cn("bg-neutral-grey-5/50 flex h-full overflow-y-auto", selectedProjectId &&
2137
- !isWizardMode &&
2138
- "p-2 pt-2 md:p-4 md:pt-3"), children: taskBoardContent })), mobileActiveTab === 1 && (_jsx("div", { className: "h-full overflow-y-auto bg-white", children: taskDetailPanel })), mobileActiveTab === 2 && (_jsx("div", { className: "h-full overflow-hidden bg-white", children: shouldHideAgentPanelForSelectedTask
2126
+ ], activeTab: mobileActiveTab, setActiveTab: setMobileActiveTab, hideContent: true, className: "gap-6" }) })), _jsxs("div", { className: "min-h-0 flex-1 overflow-hidden", children: [mobileActiveTab === 0 && (_jsx("div", { className: cn("bg-neutral-grey-5/50 flex h-full overflow-y-auto", selectedProjectId && "p-2 pt-2 md:p-4 md:pt-3"), children: taskBoardContent })), mobileActiveTab === 1 && (_jsx("div", { className: "h-full overflow-y-auto bg-white", children: taskDetailPanel })), mobileActiveTab === 2 && (_jsx("div", { className: "h-full overflow-hidden bg-white", children: shouldHideAgentPanelForSelectedTask
2139
2127
  ? taskDetailPanel
2140
- : agentTerminalPanel })), mobileActiveTab === 3 && showEditorPanel && (_jsx("div", { className: "bg-neutral-grey-5 h-full overflow-hidden", children: itemPreviewPanel }))] })] })) : (_jsx(Splitter, { panels: panels, direction: "horizontal", localStorageKey: isWizardMode
2141
- ? "task-board-wizard-splitter-v2"
2142
- : "task-board-main-splitter" })) }), selectedProjectId && (_jsx(CreateTaskDialog, { open: createDialogOpen, onOpenChange: setCreateDialogOpen, projectId: selectedProjectId, availableParentTasks: tasks, onCreated: () => {
2128
+ : agentTerminalPanel })), mobileActiveTab === 3 && showEditorPanel && (_jsx("div", { className: "bg-neutral-grey-5 h-full overflow-hidden", children: itemPreviewPanel }))] })] })) : (_jsx(Splitter, { panels: panels, direction: "horizontal", localStorageKey: "task-board-main-splitter" })) }), selectedProjectId && (_jsx(CreateTaskDialog, { open: createDialogOpen, onOpenChange: setCreateDialogOpen, projectId: selectedProjectId, availableParentTasks: tasks, onCreated: () => {
2143
2129
  void refreshTasks(selectedProjectId);
2144
2130
  void refreshExecutionState(selectedProjectId);
2145
2131
  void refreshDependencies(selectedProjectId);
2146
2132
  } })), _jsx(CreateProjectDialog, { open: createProjectOpen, onOpenChange: setCreateProjectOpen, projects: projects, onCreated: async ({ projectId: newProjectId, openInWizardMode }) => {
2147
2133
  if (openInWizardMode) {
2148
- setIsWizardMode(true);
2134
+ setActiveTab(getTaskBoardViewTabIndex("overview"));
2149
2135
  setWizardForceOverview(false);
2150
2136
  }
2151
2137
  if (newProjectId)
2152
2138
  handleSelectProject(newProjectId);
2153
2139
  await refreshProjects();
2154
- } }), _jsx(ProjectSettingsDialog, { open: !!settingsProjectId, onOpenChange: (open) => {
2155
- if (!open)
2156
- setSettingsProjectId(null);
2157
- }, projectId: settingsProjectId, selectedProject: settingsProject, projects: projects, onChanged: async () => {
2158
- await refreshProjects();
2159
- await refreshVisibleTaskData();
2160
2140
  } })] }));
2161
2141
  }
2162
2142
  //# sourceMappingURL=TaskBoardWorkspace.js.map