@parhelia/core 0.1.12485 → 0.1.12515
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.
- package/dist/agents-view/AgentCard.js +22 -20
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentsInbox.js +2 -13
- package/dist/agents-view/AgentsInbox.js.map +1 -1
- package/dist/agents-view/AgentsView.js +9 -56
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.js +14 -16
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/agents-view/ProfileAgentsGroup.js +2 -1
- package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
- package/dist/components/ui/copy-button.d.ts +2 -1
- package/dist/components/ui/copy-button.js +2 -2
- package/dist/components/ui/copy-button.js.map +1 -1
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/paste-button.d.ts +2 -1
- package/dist/components/ui/paste-button.js +2 -2
- package/dist/components/ui/paste-button.js.map +1 -1
- package/dist/components/ui/tabs.d.ts +1 -1
- package/dist/components/ui/tabs.js +4 -11
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/config/config.js +73 -8
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +30 -5
- package/dist/config/types.js.map +1 -1
- package/dist/editor/ContentTree.js +36 -4
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/FieldHistory.js +49 -31
- package/dist/editor/FieldHistory.js.map +1 -1
- package/dist/editor/FieldListField.js +4 -4
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/FieldListFieldWithFallbacks.js +23 -2
- package/dist/editor/FieldListFieldWithFallbacks.js.map +1 -1
- package/dist/editor/GlobalMenuBar.js +1 -1
- package/dist/editor/GlobalMenuBar.js.map +1 -1
- package/dist/editor/ItemInfo.js +36 -1
- package/dist/editor/ItemInfo.js.map +1 -1
- package/dist/editor/MainLayout.d.ts +0 -2
- package/dist/editor/MainLayout.js +0 -1
- package/dist/editor/MainLayout.js.map +1 -1
- package/dist/editor/Titlebar.js +2 -2
- package/dist/editor/Titlebar.js.map +1 -1
- package/dist/editor/ai/AgentDocumentList.js +32 -14
- package/dist/editor/ai/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/AgentGreeting.js +3 -2
- package/dist/editor/ai/AgentGreeting.js.map +1 -1
- package/dist/editor/ai/AgentProfileSelector.js +2 -1
- package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
- package/dist/editor/ai/AgentStatusBadge.d.ts +0 -5
- package/dist/editor/ai/AgentStatusBadge.js +57 -71
- package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
- package/dist/editor/ai/AgentTerminal.js +585 -248
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/Agents.js +33 -88
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/AiResponseMessage.js +3 -4
- package/dist/editor/ai/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/GuidanceOverlay.js +17 -11
- package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.js +4 -8
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/MediaImage.js +40 -8
- package/dist/editor/ai/MediaImage.js.map +1 -1
- package/dist/editor/ai/SpawnedAgentsPanel.js +10 -12
- package/dist/editor/ai/SpawnedAgentsPanel.js.map +1 -1
- package/dist/editor/ai/ToolCallDisplay.js +156 -64
- package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/agentDiagnostics.js +1 -3
- package/dist/editor/ai/agentDiagnostics.js.map +1 -1
- package/dist/editor/ai/dialogs/AgentDialogHandler.d.ts +1 -8
- package/dist/editor/ai/dialogs/AgentDialogHandler.js +89 -12
- package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
- package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +62 -0
- package/dist/editor/ai/dialogs/agentDialogTypes.js +2 -0
- package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
- package/dist/editor/ai/dialogs/browserBoundCapture.d.ts +29 -0
- package/dist/editor/ai/dialogs/browserBoundCapture.js +117 -0
- package/dist/editor/ai/dialogs/browserBoundCapture.js.map +1 -0
- package/dist/editor/ai/dialogs/capturePageDom.d.ts +3 -0
- package/dist/editor/ai/dialogs/capturePageDom.js +64 -0
- package/dist/editor/ai/dialogs/capturePageDom.js.map +1 -0
- package/dist/editor/ai/dialogs/capturePageScreenshot.d.ts +3 -0
- package/dist/editor/ai/dialogs/capturePageScreenshot.js +446 -0
- package/dist/editor/ai/dialogs/capturePageScreenshot.js.map +1 -0
- package/dist/editor/ai/useAgentStatus.js +23 -85
- package/dist/editor/ai/useAgentStatus.js.map +1 -1
- package/dist/editor/client/EditorShell.js +88 -100
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +8 -16
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/hooks/useEditorUrlSync.js +1 -2
- package/dist/editor/client/hooks/useEditorUrlSync.js.map +1 -1
- package/dist/editor/client/hooks/useEditorWebSocket.js +56 -44
- package/dist/editor/client/hooks/useEditorWebSocket.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js +19 -6
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/itemsRepository.js +10 -6
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/operations.js +15 -3
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.js +1 -1
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.d.ts +0 -4
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/client/waitForEditOperationTerminal.d.ts +8 -3
- package/dist/editor/client/waitForEditOperationTerminal.js +5 -1
- package/dist/editor/client/waitForEditOperationTerminal.js.map +1 -1
- package/dist/editor/commands/componentCommands.js +3 -49
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/commands/customCommandConverter.js +2 -1
- package/dist/editor/commands/customCommandConverter.js.map +1 -1
- package/dist/editor/commands/handlers/agentHandler.js +2 -1
- package/dist/editor/commands/handlers/agentHandler.js.map +1 -1
- package/dist/editor/commands/itemCommands.js +5 -0
- package/dist/editor/commands/itemCommands.js.map +1 -1
- package/dist/editor/content-tree/IndicatorSettings.d.ts +11 -0
- package/dist/editor/content-tree/IndicatorSettings.js +60 -0
- package/dist/editor/content-tree/IndicatorSettings.js.map +1 -0
- package/dist/editor/content-tree/TreeOptions.d.ts +6 -0
- package/dist/editor/content-tree/TreeOptions.js +8 -0
- package/dist/editor/content-tree/TreeOptions.js.map +1 -0
- package/dist/editor/content-tree/TreeSettingsMenu.d.ts +2 -0
- package/dist/editor/content-tree/TreeSettingsMenu.js +30 -0
- package/dist/editor/content-tree/TreeSettingsMenu.js.map +1 -0
- package/dist/editor/hooks/useNavigationPanelLogic.js +2 -6
- package/dist/editor/hooks/useNavigationPanelLogic.js.map +1 -1
- package/dist/editor/manualActionEvents.d.ts +8 -0
- package/dist/editor/manualActionEvents.js +48 -0
- package/dist/editor/manualActionEvents.js.map +1 -0
- package/dist/editor/menubar/PageSelector.js +9 -12
- package/dist/editor/menubar/PageSelector.js.map +1 -1
- package/dist/editor/menubar/WorkflowButton.js +23 -23
- package/dist/editor/menubar/WorkflowButton.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.d.ts +3 -9
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +225 -71
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
- package/dist/editor/notifications/WatchButton.js +2 -2
- package/dist/editor/notifications/WatchButton.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +11 -11
- package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
- package/dist/editor/page-viewer/EditorForm.js +2 -0
- package/dist/editor/page-viewer/EditorForm.js.map +1 -1
- package/dist/editor/page-viewer/PageViewer.js +8 -2
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +21 -8
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +107 -49
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
- package/dist/editor/page-viewer/pageViewContext.d.ts +1 -0
- package/dist/editor/page-viewer/pageViewContext.js +51 -14
- package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
- package/dist/editor/reviews/CreateReviewDialog.js +1 -3
- package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
- package/dist/editor/reviews/DiffView.js +7 -14
- package/dist/editor/reviews/DiffView.js.map +1 -1
- package/dist/editor/reviews/useMultiReview.js +2 -2
- package/dist/editor/reviews/useMultiReview.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +34 -3
- package/dist/editor/services/agentService.js +107 -72
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/agentStatus.d.ts +12 -0
- package/dist/editor/services/agentStatus.js +59 -0
- package/dist/editor/services/agentStatus.js.map +1 -0
- package/dist/editor/services/aiService.d.ts +3 -1
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/indexService.js +1 -1
- package/dist/editor/services/indexService.js.map +1 -1
- package/dist/editor/settings/SettingsView.js +22 -20
- package/dist/editor/settings/SettingsView.js.map +1 -1
- package/dist/editor/settings/Status.js +5 -4
- package/dist/editor/settings/Status.js.map +1 -1
- package/dist/editor/settings/index/useIndexStatus.js +20 -22
- package/dist/editor/settings/index/useIndexStatus.js.map +1 -1
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.d.ts +7 -0
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js +48 -0
- package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js.map +1 -0
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.d.ts +2 -1
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +2 -2
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.d.ts +12 -0
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +46 -0
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -0
- package/dist/editor/settings/panels/JavaScriptToolConfigPanel.d.ts +9 -0
- package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js +34 -0
- package/dist/editor/settings/panels/JavaScriptToolConfigPanel.js.map +1 -0
- package/dist/editor/settings/panels/JavaScriptToolsPanel.d.ts +2 -0
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js +285 -0
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -0
- package/dist/editor/settings/panels/ModelConfigPanel.d.ts +2 -1
- package/dist/editor/settings/panels/ModelConfigPanel.js +88 -7
- package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/ModelsPanel.js +129 -70
- package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.d.ts +1 -4
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -3
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +78 -22
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.d.ts +1 -1
- package/dist/editor/settings/panels/ProvidersPanel.js +40 -55
- package/dist/editor/settings/panels/ProvidersPanel.js.map +1 -1
- package/dist/editor/settings/panels/index.d.ts +1 -0
- package/dist/editor/settings/panels/index.js +1 -0
- package/dist/editor/settings/panels/index.js.map +1 -1
- package/dist/editor/settings/status/coreStatusChecks.js +28 -17
- package/dist/editor/settings/status/coreStatusChecks.js.map +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +2 -1
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/sidebar/ComponentTree.js +210 -49
- package/dist/editor/sidebar/ComponentTree.js.map +1 -1
- package/dist/editor/sidebar/EditHistory.js +3 -38
- package/dist/editor/sidebar/EditHistory.js.map +1 -1
- package/dist/editor/sidebar/MainContentTree.js +4 -3
- package/dist/editor/sidebar/MainContentTree.js.map +1 -1
- package/dist/editor/sidebar/MorePanelsButton.js +1 -1
- package/dist/editor/sidebar/MorePanelsButton.js.map +1 -1
- package/dist/editor/sidebar/NavigationPanelItem.js +3 -6
- package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
- package/dist/editor/sidebar/SidebarPanel.js +20 -4
- package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
- package/dist/editor/sidebar/SidebarStack.js +1 -0
- package/dist/editor/sidebar/SidebarStack.js.map +1 -1
- package/dist/editor/sidebar/Workbox.js +53 -3
- package/dist/editor/sidebar/Workbox.js.map +1 -1
- package/dist/editor/tree-indicators/GutterColumns.d.ts +3 -1
- package/dist/editor/tree-indicators/GutterColumns.js +4 -3
- package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
- package/dist/editor/tree-indicators/GutterContext.d.ts +4 -0
- package/dist/editor/tree-indicators/GutterContext.js +23 -0
- package/dist/editor/tree-indicators/GutterContext.js.map +1 -1
- package/dist/editor/tree-indicators/index.d.ts +0 -1
- package/dist/editor/tree-indicators/index.js +0 -1
- package/dist/editor/tree-indicators/index.js.map +1 -1
- package/dist/editor/tree-indicators/types.d.ts +2 -1
- package/dist/editor/ui/HomeButton.js +1 -1
- package/dist/editor/ui/HomeButton.js.map +1 -1
- package/dist/editor/ui/ItemNameDialogNew.d.ts +2 -0
- package/dist/editor/ui/ItemNameDialogNew.js +17 -7
- package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
- package/dist/editor/ui/ItemSearch.js +7 -11
- package/dist/editor/ui/ItemSearch.js.map +1 -1
- package/dist/editor/ui/SimpleTabs.js +33 -16
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Splitter.js +1 -1
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/views/CompareView.js +3 -1
- package/dist/editor/views/CompareView.js.map +1 -1
- package/dist/editor/views/EditorSlot.js +2 -2
- package/dist/editor/views/EditorSlot.js.map +1 -1
- package/dist/editor/views/ParheliaView.js +5 -6
- package/dist/editor/views/ParheliaView.js.map +1 -1
- package/dist/editor/views/SingleEditView.js +2 -0
- package/dist/editor/views/SingleEditView.js.map +1 -1
- package/dist/editor/views/editorSlotContext.js +35 -6
- package/dist/editor/views/editorSlotContext.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/sanitize.d.ts +10 -0
- package/dist/lib/sanitize.js +40 -0
- package/dist/lib/sanitize.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/services/setupWizardService.d.ts +28 -0
- package/dist/setup/services/setupWizardService.js +34 -0
- package/dist/setup/services/setupWizardService.js.map +1 -1
- package/dist/setup/wizard/steps/AddModelDialog.js +12 -3
- package/dist/setup/wizard/steps/AddModelDialog.js.map +1 -1
- package/dist/setup/wizard/steps/ImportModelDialog.js +3 -1
- package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
- package/dist/splash-screen/NewPage.js +24 -24
- package/dist/splash-screen/NewPage.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +29 -10
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/AssignAgentDialog.js +0 -8
- package/dist/task-board/components/AssignAgentDialog.js.map +1 -1
- package/dist/task-board/components/ItemCollectionEditorDialog.js +5 -12
- package/dist/task-board/components/ItemCollectionEditorDialog.js.map +1 -1
- package/dist/task-board/components/ProjectAgentsPanel.js +2 -27
- package/dist/task-board/components/ProjectAgentsPanel.js.map +1 -1
- package/dist/task-board/components/ProjectOverviewContent.js +2 -2
- package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.js +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
- package/dist/task-board/components/TaskAgentPanel.js +2 -6
- package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
- package/dist/task-board/components/TaskDetailPanel.js +1 -1
- package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js +3 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -1
- package/dist/task-board/taskAgentLink.js +1 -3
- package/dist/task-board/taskAgentLink.js.map +1 -1
- package/dist/task-board/views/DependencyGraphView.js +19 -1
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/tour/Tour.js +10 -4
- package/dist/tour/Tour.js.map +1 -1
- package/dist/tour/default-tour.js +51 -11
- package/dist/tour/default-tour.js.map +1 -1
- package/dist/types.d.ts +4 -13
- package/package.json +4 -1
- package/dist/editor/ComponentInfo.d.ts +0 -4
- package/dist/editor/ComponentInfo.js +0 -41
- package/dist/editor/ComponentInfo.js.map +0 -1
- package/dist/editor/tree-indicators/GutterSelector.d.ts +0 -5
- package/dist/editor/tree-indicators/GutterSelector.js +0 -91
- package/dist/editor/tree-indicators/GutterSelector.js.map +0 -1
|
@@ -154,14 +154,14 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
154
154
|
if (typeof window !== "undefined")
|
|
155
155
|
sessionStorage?.setItem("sessionId", sessionId);
|
|
156
156
|
// Workspace state
|
|
157
|
-
// Note: "reviews" is a sidebar, not a workspace. If
|
|
157
|
+
// Note: "reviews" is a sidebar, not a workspace. If workspace=reviews, we should
|
|
158
158
|
// set workspace to "editor" and open the reviews sidebar instead.
|
|
159
159
|
// Memoize searchParams reads to avoid triggering Router state updates during render
|
|
160
160
|
// (Next.js App Router uses startTransition internally for URL changes)
|
|
161
|
-
const rawWorkspace = useMemo(() => searchParams.get("workspace")
|
|
161
|
+
const rawWorkspace = useMemo(() => searchParams.get("workspace"), [searchParams]);
|
|
162
162
|
const isReviewsSidebarRequest = rawWorkspace === "reviews";
|
|
163
163
|
const [workspaceId, setWorkspaceId] = useState(
|
|
164
|
-
// If
|
|
164
|
+
// If workspace=reviews, use "editor" workspace (reviews is a sidebar, not a workspace)
|
|
165
165
|
isReviewsSidebarRequest
|
|
166
166
|
? "editor"
|
|
167
167
|
: (rawWorkspace ??
|
|
@@ -183,7 +183,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
183
183
|
else {
|
|
184
184
|
sidebars = [...(configuration.editor.defaultOpenSidebars ?? [])];
|
|
185
185
|
}
|
|
186
|
-
// If
|
|
186
|
+
// If workspace=reviews was requested, ensure reviews sidebar is open
|
|
187
187
|
if (isReviewsSidebarRequest && !sidebars.includes("reviews")) {
|
|
188
188
|
sidebars.push("reviews");
|
|
189
189
|
}
|
|
@@ -313,12 +313,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
313
313
|
}
|
|
314
314
|
catch { }
|
|
315
315
|
}, [lockedSidebars]);
|
|
316
|
-
// Legacy aliases for backwards compatibility
|
|
317
316
|
const viewName = workspaceId;
|
|
318
|
-
const setViewName = setWorkspaceId;
|
|
319
|
-
const viewNameRef = workspaceIdRef;
|
|
320
|
-
const previousViewName = previousWorkspaceId;
|
|
321
|
-
const setPreviousViewName = setPreviousWorkspaceId;
|
|
322
317
|
const [compareMode, setCompareModeState] = useState(false);
|
|
323
318
|
const [componentDesignerComponent, setComponentDesignerComponent] = useState();
|
|
324
319
|
const [componentDesignerRendering, setComponentDesignerRendering] = useState();
|
|
@@ -443,13 +438,12 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
443
438
|
visitedAt: entry.visitedAt,
|
|
444
439
|
}));
|
|
445
440
|
});
|
|
446
|
-
// Navigation history for browser history (
|
|
441
|
+
// Navigation history for browser history (workspace + item combinations)
|
|
447
442
|
const [navigationHistory, setNavigationHistory] = useState(() => {
|
|
448
|
-
// Initialize from browse history with current
|
|
443
|
+
// Initialize from browse history with the current workspace
|
|
449
444
|
if (!userInfo.browseHistory)
|
|
450
445
|
return [];
|
|
451
446
|
const defaultWorkspaceId = searchParams.get("workspace") ??
|
|
452
|
-
searchParams.get("view") ??
|
|
453
447
|
configuration.editor.defaultWorkspace ??
|
|
454
448
|
configuration.editor.workspaces?.[0]?.id ??
|
|
455
449
|
"editor";
|
|
@@ -508,6 +502,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
508
502
|
const [helpTerminalInitialPrompt, setHelpTerminalInitialPrompt] = useState(undefined);
|
|
509
503
|
const [helpTerminalProfileName, setHelpTerminalProfileName] = useState(undefined);
|
|
510
504
|
const [helpTerminalActiveTab, setHelpTerminalActiveTab] = useState(undefined);
|
|
505
|
+
const [selectedHelpSectionId, setSelectedHelpSectionId] = useState(null);
|
|
511
506
|
const [showAgentsWorkspaceEditor, setShowAgentsWorkspaceEditor] = useState(false);
|
|
512
507
|
const [selectedAgentsWorkspaceAgentId, setSelectedAgentsWorkspaceAgentId] = useState(null);
|
|
513
508
|
const [activeEditorTab, setActiveEditorTab] = useState(null);
|
|
@@ -534,13 +529,12 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
534
529
|
if (!startupChecks.hasBlockingIssues)
|
|
535
530
|
return;
|
|
536
531
|
// Don't redirect if already in settings workspace - let user navigate freely within settings
|
|
537
|
-
const currentWorkspace = searchParams.get("workspace")
|
|
532
|
+
const currentWorkspace = searchParams.get("workspace");
|
|
538
533
|
if (currentWorkspace === "settings")
|
|
539
534
|
return;
|
|
540
535
|
// Redirect to the status panel (where user can see all issues and navigate to fixes)
|
|
541
536
|
const url = new URL(window.location.href);
|
|
542
537
|
url.searchParams.set("workspace", "settings");
|
|
543
|
-
url.searchParams.delete("view"); // Remove legacy param
|
|
544
538
|
url.searchParams.set("ccpanel", "status");
|
|
545
539
|
router.push(url.toString(), { scroll: false });
|
|
546
540
|
}, [
|
|
@@ -558,6 +552,16 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
558
552
|
setMode(queryMode);
|
|
559
553
|
}
|
|
560
554
|
}, [searchParams, isInitialLoad]);
|
|
555
|
+
useEffect(() => {
|
|
556
|
+
if (!isInitialLoad)
|
|
557
|
+
return;
|
|
558
|
+
const helpParam = searchParams.get("help");
|
|
559
|
+
if (helpParam) {
|
|
560
|
+
setHelpTerminalActiveTab("manual");
|
|
561
|
+
setShowHelpTerminal(true);
|
|
562
|
+
setSelectedHelpSectionId(helpParam === "contents" || helpParam === "true" ? null : helpParam);
|
|
563
|
+
}
|
|
564
|
+
}, [searchParams, isInitialLoad]);
|
|
561
565
|
useEffect(() => {
|
|
562
566
|
if (mode === "suggestions") {
|
|
563
567
|
// Ensure we're in the editor workspace and open the feedback sidebar
|
|
@@ -782,8 +786,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
782
786
|
console.error(`No workspace found for id: ${workspaceId}`);
|
|
783
787
|
return null;
|
|
784
788
|
}
|
|
785
|
-
// Legacy alias for backwards compatibility
|
|
786
|
-
const currentView = currentWorkspace;
|
|
787
789
|
const activeKeyboardCommands = useMemo(() => {
|
|
788
790
|
const activeCommandIds = new Set(currentWorkspace.keyboardCommandIds ?? []);
|
|
789
791
|
return (configuration.commands.keyboardCommands ?? []).filter((command) => activeCommandIds.has(command.id));
|
|
@@ -934,6 +936,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
934
936
|
setHelpTerminalInitialPrompt(undefined);
|
|
935
937
|
setHelpTerminalProfileName(undefined);
|
|
936
938
|
setHelpTerminalActiveTab(undefined);
|
|
939
|
+
setSelectedHelpSectionId(null);
|
|
937
940
|
}
|
|
938
941
|
}, [showHelpTerminal]);
|
|
939
942
|
const toggleHelpTerminal = useCallback((options) => {
|
|
@@ -1093,9 +1096,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1093
1096
|
isHandlingPopStateRef.current = true;
|
|
1094
1097
|
// Sync URL parameters back to component state for browser navigation
|
|
1095
1098
|
const urlParams = new URLSearchParams(window.location.search);
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
if (urlWorkspace && urlWorkspace !== viewNameRef.current) {
|
|
1099
|
+
const urlWorkspace = urlParams.get("workspace");
|
|
1100
|
+
if (urlWorkspace && urlWorkspace !== workspaceIdRef.current) {
|
|
1099
1101
|
setWorkspaceId(urlWorkspace);
|
|
1100
1102
|
}
|
|
1101
1103
|
// Handle sidebar changes
|
|
@@ -1112,6 +1114,18 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1112
1114
|
if (compareValue !== compareMode) {
|
|
1113
1115
|
setCompareMode(compareValue);
|
|
1114
1116
|
}
|
|
1117
|
+
// Handle help panel changes
|
|
1118
|
+
const helpParam = urlParams.get("help");
|
|
1119
|
+
if (helpParam) {
|
|
1120
|
+
setHelpTerminalActiveTab("manual");
|
|
1121
|
+
setShowHelpTerminal(true);
|
|
1122
|
+
setSelectedHelpSectionId(helpParam === "contents" || helpParam === "true"
|
|
1123
|
+
? null
|
|
1124
|
+
: helpParam);
|
|
1125
|
+
}
|
|
1126
|
+
else {
|
|
1127
|
+
handleSetShowHelpTerminal(false);
|
|
1128
|
+
}
|
|
1115
1129
|
// Handle mode changes
|
|
1116
1130
|
const urlMode = urlParams.get("mode");
|
|
1117
1131
|
if (urlMode && urlMode !== mode) {
|
|
@@ -1890,7 +1904,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1890
1904
|
if (current.get("workspace") !== viewName) {
|
|
1891
1905
|
current.set("workspace", viewName);
|
|
1892
1906
|
}
|
|
1893
|
-
current.delete("view"); // Remove legacy view param
|
|
1894
1907
|
// Sync sidebar state
|
|
1895
1908
|
const currentSidebars = current.get("sidebar") ?? "";
|
|
1896
1909
|
const newSidebars = openSidebars.join(",");
|
|
@@ -1902,6 +1915,12 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1902
1915
|
current.delete("sidebar");
|
|
1903
1916
|
}
|
|
1904
1917
|
}
|
|
1918
|
+
if (showHelpTerminal) {
|
|
1919
|
+
current.set("help", selectedHelpSectionId ?? "contents");
|
|
1920
|
+
}
|
|
1921
|
+
else {
|
|
1922
|
+
current.delete("help");
|
|
1923
|
+
}
|
|
1905
1924
|
if (!compareMode) {
|
|
1906
1925
|
current.delete("compare");
|
|
1907
1926
|
current.delete("compareLanguage");
|
|
@@ -1969,6 +1988,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
1969
1988
|
fullscreen,
|
|
1970
1989
|
currentWizardId,
|
|
1971
1990
|
openSidebars,
|
|
1991
|
+
showHelpTerminal,
|
|
1992
|
+
selectedHelpSectionId,
|
|
1972
1993
|
]);
|
|
1973
1994
|
useEffect(() => {
|
|
1974
1995
|
async function load() {
|
|
@@ -2364,20 +2385,35 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2364
2385
|
? existingOp.progress
|
|
2365
2386
|
: op.progress;
|
|
2366
2387
|
// IMPORTANT: Once canUndo becomes true, never downgrade it to false,
|
|
2367
|
-
// UNLESS this update indicates the operation was undone.
|
|
2368
|
-
//
|
|
2369
|
-
//
|
|
2370
|
-
|
|
2388
|
+
// UNLESS this update indicates the operation was undone.
|
|
2389
|
+
// Runtime logs show long-running undo completion can arrive as:
|
|
2390
|
+
// - existing: canUndo=true, executionStatus=executing
|
|
2391
|
+
// - incoming: canUndo=false, executionStatus=completed
|
|
2392
|
+
// without explicit undone/canRedo flags yet.
|
|
2393
|
+
const isExplicitUndoUpdate = op.undone === true || op.canRedo === true;
|
|
2394
|
+
const isInferredUndoCompletion = existingOp.executionStatus === "executing" &&
|
|
2395
|
+
op.executionStatus === "completed" &&
|
|
2396
|
+
existingOp.canUndo === true &&
|
|
2397
|
+
op.canUndo === false;
|
|
2398
|
+
const isUndoUpdate = isExplicitUndoUpdate || isInferredUndoCompletion;
|
|
2371
2399
|
const mergedCanUndo = isUndoUpdate
|
|
2372
2400
|
? false
|
|
2373
2401
|
: existingOp.canUndo === true
|
|
2374
2402
|
? true
|
|
2375
2403
|
: op.canUndo;
|
|
2404
|
+
const mergedCanRedo = isUndoUpdate
|
|
2405
|
+
? true
|
|
2406
|
+
: op.canRedo ?? existingOp.canRedo;
|
|
2407
|
+
const mergedUndone = isUndoUpdate
|
|
2408
|
+
? true
|
|
2409
|
+
: op.undone ?? existingOp.undone;
|
|
2376
2410
|
const mergedOp = {
|
|
2377
2411
|
...existingOp,
|
|
2378
2412
|
...op,
|
|
2379
2413
|
progress: mergedProgress,
|
|
2380
2414
|
canUndo: mergedCanUndo,
|
|
2415
|
+
canRedo: mergedCanRedo,
|
|
2416
|
+
undone: mergedUndone,
|
|
2381
2417
|
};
|
|
2382
2418
|
// Ensure undone operations always have canRedo: true.
|
|
2383
2419
|
if (mergedOp.undone && !mergedOp.canRedo) {
|
|
@@ -2431,10 +2467,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2431
2467
|
});
|
|
2432
2468
|
// Ref for markOperationComplete callback (needed because operationsContext is created later)
|
|
2433
2469
|
const markOperationCompleteRef = useRef(null);
|
|
2434
|
-
// When the websocket is reconnecting, we can briefly lose the ability to send messages.
|
|
2435
|
-
// Agent dialog responses (e.g. questionnaire cancel/submit) must not be dropped, otherwise
|
|
2436
|
-
// the backend tool call can remain pending and tests/users will hang.
|
|
2437
|
-
const pendingAgentDialogResponsesRef = useRef([]);
|
|
2438
2470
|
// WebSocket message handler and connection
|
|
2439
2471
|
const messageHandler = useSocketMessageHandler({
|
|
2440
2472
|
sessionId,
|
|
@@ -2485,22 +2517,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2485
2517
|
void startupChecks.recheckQuiet();
|
|
2486
2518
|
// Increment socket connection version to trigger re-subscriptions
|
|
2487
2519
|
setSocketConnectionVersion((v) => v + 1);
|
|
2488
|
-
// Flush any queued agent dialog responses now that the socket is open.
|
|
2489
|
-
// Keep this early so pending tool calls unblock ASAP.
|
|
2490
|
-
try {
|
|
2491
|
-
if (socketInstanceRef.current &&
|
|
2492
|
-
socketInstanceRef.current.readyState === WebSocket.OPEN &&
|
|
2493
|
-
pendingAgentDialogResponsesRef.current.length > 0) {
|
|
2494
|
-
// FIFO flush
|
|
2495
|
-
while (pendingAgentDialogResponsesRef.current.length > 0) {
|
|
2496
|
-
const queued = pendingAgentDialogResponsesRef.current.shift();
|
|
2497
|
-
socketInstanceRef.current.send(JSON.stringify(queued));
|
|
2498
|
-
}
|
|
2499
|
-
}
|
|
2500
|
-
}
|
|
2501
|
-
catch (e) {
|
|
2502
|
-
console.error("Failed to flush queued agent dialog responses:", e);
|
|
2503
|
-
}
|
|
2504
2520
|
// Fetch any running operations on (re)connect for auto-resume
|
|
2505
2521
|
// This ensures the UI shows operations that are still executing
|
|
2506
2522
|
try {
|
|
@@ -2525,6 +2541,13 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2525
2541
|
sendClientInfo,
|
|
2526
2542
|
setSocketDiagnostics,
|
|
2527
2543
|
});
|
|
2544
|
+
useEffect(() => {
|
|
2545
|
+
const hasMySession = activeSessions.some((s) => s.sessionId === sessionId);
|
|
2546
|
+
if (hasMySession &&
|
|
2547
|
+
socketInstanceRef.current?.readyState === WebSocket.OPEN) {
|
|
2548
|
+
toast.dismiss("session-revoked");
|
|
2549
|
+
}
|
|
2550
|
+
}, [activeSessions, sessionId, socketConnectionVersion, socketInstanceRef]);
|
|
2528
2551
|
useEffect(() => {
|
|
2529
2552
|
const handleRevoked = (event) => {
|
|
2530
2553
|
const customEvent = event;
|
|
@@ -2540,15 +2563,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2540
2563
|
socketInstanceRef.current.readyState === WebSocket.OPEN) {
|
|
2541
2564
|
socketInstanceRef.current.send(JSON.stringify(message));
|
|
2542
2565
|
}
|
|
2543
|
-
else if (message.type === "agent-dialog-response") {
|
|
2544
|
-
// Queue dialog responses to avoid losing them during reconnects.
|
|
2545
|
-
pendingAgentDialogResponsesRef.current.push(message);
|
|
2546
|
-
// Prevent unbounded growth in pathological scenarios.
|
|
2547
|
-
if (pendingAgentDialogResponsesRef.current.length > 50) {
|
|
2548
|
-
pendingAgentDialogResponsesRef.current =
|
|
2549
|
-
pendingAgentDialogResponsesRef.current.slice(-50);
|
|
2550
|
-
}
|
|
2551
|
-
}
|
|
2552
2566
|
}, [socketInstanceRef]);
|
|
2553
2567
|
// URL update helper - defined early so it can be used by workspace/sidebar functions
|
|
2554
2568
|
const updateUrl = useCallback((params) => {
|
|
@@ -2615,14 +2629,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2615
2629
|
updateUrl,
|
|
2616
2630
|
handleSetShowAgentsPanel,
|
|
2617
2631
|
]);
|
|
2618
|
-
// Legacy alias for backwards compatibility
|
|
2619
|
-
const switchView = useCallback((viewName, options) => {
|
|
2620
|
-
// Handle ccpanel for settings workspace
|
|
2621
|
-
if (options?.ccpanel) {
|
|
2622
|
-
updateUrl({ ccpanel: options.ccpanel, workspace: viewName });
|
|
2623
|
-
}
|
|
2624
|
-
switchWorkspace(viewName, options);
|
|
2625
|
-
}, [switchWorkspace, updateUrl]);
|
|
2626
2632
|
// Helper: get all sidebar IDs that should be preserved (locked sidebars + their stack mates)
|
|
2627
2633
|
const getPreservedSidebarIds = useCallback(() => {
|
|
2628
2634
|
const lockedSet = new Set(lockedSidebarsRef.current);
|
|
@@ -2698,18 +2704,21 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
2698
2704
|
isMobile,
|
|
2699
2705
|
]);
|
|
2700
2706
|
// Ensure a sidebar is open (without toggling it closed if already open)
|
|
2701
|
-
const openSidebar = useCallback((sidebarId) => {
|
|
2707
|
+
const openSidebar = useCallback((sidebarId, options) => {
|
|
2702
2708
|
const currentOpenSidebars = openSidebarsRef.current;
|
|
2703
2709
|
if (currentOpenSidebars.includes(sidebarId)) {
|
|
2704
2710
|
// Already open, nothing to do
|
|
2705
2711
|
return;
|
|
2706
2712
|
}
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
+
const preservedSet = options?.preserveOpenSidebars
|
|
2714
|
+
? undefined
|
|
2715
|
+
: getPreservedSidebarIds();
|
|
2716
|
+
const newSidebars = options?.preserveOpenSidebars
|
|
2717
|
+
? [...currentOpenSidebars, sidebarId]
|
|
2718
|
+
: [
|
|
2719
|
+
...currentOpenSidebars.filter((id) => preservedSet?.has(id)),
|
|
2720
|
+
sidebarId,
|
|
2721
|
+
];
|
|
2713
2722
|
openSidebarsRef.current = newSidebars;
|
|
2714
2723
|
setOpenSidebars(newSidebars);
|
|
2715
2724
|
ensureSidebarPinned(sidebarId);
|
|
@@ -3383,8 +3392,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3383
3392
|
skipViewChange: true,
|
|
3384
3393
|
});
|
|
3385
3394
|
if (item) {
|
|
3386
|
-
|
|
3387
|
-
switchView("editor", {
|
|
3395
|
+
switchWorkspace("editor", {
|
|
3388
3396
|
skipNavigationHistory: true,
|
|
3389
3397
|
});
|
|
3390
3398
|
showInfoToast({
|
|
@@ -3417,7 +3425,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3417
3425
|
document.removeEventListener("click", handleCtrlClick, true);
|
|
3418
3426
|
};
|
|
3419
3427
|
}
|
|
3420
|
-
}, [loadItem,
|
|
3428
|
+
}, [loadItem, switchWorkspace, showInfoToast, showErrorToast]);
|
|
3421
3429
|
useEffect(() => {
|
|
3422
3430
|
const handleGlobalBlur = () => {
|
|
3423
3431
|
operations.onFieldBlur?.();
|
|
@@ -3455,18 +3463,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3455
3463
|
// Otherwise, only show workspaces that are in the settings
|
|
3456
3464
|
return workspaceIdsFromSettings.includes(w.id) && !w.visible;
|
|
3457
3465
|
});
|
|
3458
|
-
// Legacy: Calculate visible views for backwards compatibility
|
|
3459
|
-
const allViews = (configuration.editor.views ?? [])
|
|
3460
|
-
.filter((x) => {
|
|
3461
|
-
return !x.visible && !x.hidden;
|
|
3462
|
-
})
|
|
3463
|
-
.filter((x) => !userInfo.views ||
|
|
3464
|
-
userInfo.views.map((view) => view.name).includes(x.name));
|
|
3465
|
-
const pinnedViews = userInfo.preferences?.pinnedViews ||
|
|
3466
|
-
configuration.editor.defaultPinnedViews ||
|
|
3467
|
-
[];
|
|
3468
|
-
// Legacy visibleViews for backwards compatibility
|
|
3469
|
-
const visibleViews = allViews.filter((view) => view.name === viewName || pinnedViews.includes(view.name));
|
|
3470
3466
|
// Handle initial mode setup from URL (only on initial load)
|
|
3471
3467
|
useEffect(() => {
|
|
3472
3468
|
if (!isInitialLoad)
|
|
@@ -3511,7 +3507,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3511
3507
|
// This is especially important when called from the tour, where the current workspace
|
|
3512
3508
|
// might be the editor and URL-only navigation would get "corrected" back.
|
|
3513
3509
|
try {
|
|
3514
|
-
|
|
3510
|
+
switchWorkspace("home", {
|
|
3515
3511
|
skipConfirmation: true,
|
|
3516
3512
|
skipNavigationHistory: true,
|
|
3517
3513
|
});
|
|
@@ -3558,7 +3554,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3558
3554
|
const current = new URLSearchParams(searchParams.toString());
|
|
3559
3555
|
current.delete("version");
|
|
3560
3556
|
current.delete("itemid");
|
|
3561
|
-
current.delete("view"); // Remove legacy param
|
|
3562
3557
|
current.delete("workspace"); // Clear workspace
|
|
3563
3558
|
current.set("create", "1");
|
|
3564
3559
|
const newUrl = `${pathname}?${current.toString()}`;
|
|
@@ -3891,12 +3886,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3891
3886
|
reorderPinnedSidebars,
|
|
3892
3887
|
reorderOpenSidebars,
|
|
3893
3888
|
getResolvedSidebar,
|
|
3894
|
-
// Legacy compatibility (deprecated)
|
|
3895
|
-
viewName,
|
|
3896
|
-
previousViewName,
|
|
3897
|
-
switchView,
|
|
3898
|
-
view: currentView,
|
|
3899
|
-
visibleViews,
|
|
3900
3889
|
compareMode,
|
|
3901
3890
|
setCompareMode,
|
|
3902
3891
|
fullscreen,
|
|
@@ -3949,6 +3938,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
3949
3938
|
setActiveSlot,
|
|
3950
3939
|
revision,
|
|
3951
3940
|
notifyPageModelReady,
|
|
3941
|
+
pageModelReadyToken,
|
|
3952
3942
|
selectedComment,
|
|
3953
3943
|
setSelectedComment,
|
|
3954
3944
|
comments,
|
|
@@ -4040,6 +4030,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4040
4030
|
helpTerminalProfileName,
|
|
4041
4031
|
helpTerminalActiveTab,
|
|
4042
4032
|
setHelpTerminalActiveTab,
|
|
4033
|
+
selectedHelpSectionId,
|
|
4034
|
+
setSelectedHelpSectionId,
|
|
4043
4035
|
showAgentsWorkspaceEditor,
|
|
4044
4036
|
setShowAgentsWorkspaceEditor: handleSetShowAgentsWorkspaceEditor,
|
|
4045
4037
|
selectedAgentsWorkspaceAgentId,
|
|
@@ -4092,7 +4084,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4092
4084
|
configuration,
|
|
4093
4085
|
updateUrl,
|
|
4094
4086
|
workspaceId,
|
|
4095
|
-
switchView,
|
|
4096
4087
|
pathname,
|
|
4097
4088
|
router,
|
|
4098
4089
|
item,
|
|
@@ -4133,9 +4124,6 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4133
4124
|
reorderOpenSidebars,
|
|
4134
4125
|
getResolvedSidebar,
|
|
4135
4126
|
viewName,
|
|
4136
|
-
previousViewName,
|
|
4137
|
-
currentView,
|
|
4138
|
-
visibleViews,
|
|
4139
4127
|
compareMode,
|
|
4140
4128
|
// Important: in multi-slot mode the active PageViewContext can change
|
|
4141
4129
|
// without the base `pageViewContext` identity changing (e.g. switching slots).
|
|
@@ -4160,6 +4148,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4160
4148
|
currentItemDescriptor,
|
|
4161
4149
|
revision,
|
|
4162
4150
|
notifyPageModelReady,
|
|
4151
|
+
pageModelReadyToken,
|
|
4163
4152
|
selectedComment,
|
|
4164
4153
|
comments,
|
|
4165
4154
|
availableCommentTags,
|
|
@@ -4203,6 +4192,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4203
4192
|
helpTerminalProfileName,
|
|
4204
4193
|
helpTerminalActiveTab,
|
|
4205
4194
|
setHelpTerminalActiveTab,
|
|
4195
|
+
selectedHelpSectionId,
|
|
4206
4196
|
showAgentsWorkspaceEditor,
|
|
4207
4197
|
selectedAgentsWorkspaceAgentId,
|
|
4208
4198
|
activeEditorTab,
|
|
@@ -4476,15 +4466,13 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4476
4466
|
useEffect(() => {
|
|
4477
4467
|
fieldsEditContext.clearModifiedFields();
|
|
4478
4468
|
}, [currentItemDescriptor]);
|
|
4479
|
-
if (!
|
|
4469
|
+
if (!currentWorkspace)
|
|
4480
4470
|
return null;
|
|
4481
4471
|
const editorUi = fullscreen ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "fixed inset-0 flex", children: [_jsx(PageViewerFrame, { compareView: compareMode, pageViewContext: activePageViewContext }), _jsx(FullscreenControls, { device: activePageViewContext.device, setDevice: (d) => activePageViewContext.setDevice(d), canExit: !configuration.forceFullscreen, onExit: () => setFullscreen(false), firstMobileDeviceName: configuration.devices[0]?.name })] }), showFullscreenHint && !configuration.forceFullscreen && !isMobile && (_jsx("div", { className: "fixed inset-0 z-10000", onMouseMoveCapture: () => {
|
|
4482
4472
|
setTimeout(() => {
|
|
4483
4473
|
setShowFullscreenHint(false);
|
|
4484
4474
|
}, 600);
|
|
4485
|
-
}, "data-testid": "fullscreen-hint-overlay", children: _jsxs("div", { className: "fixed top-6 left-1/2 -translate-x-1/2 transform rounded-full bg-black/60 px-6 py-2.5 text-sm font-medium text-white shadow-2xl backdrop-blur-md transition-all duration-500", children: ["Press", " ", _jsx("kbd", { className: "mx-1 rounded bg-white/20 px-1.5 py-0.5 text-xs font-semibold", children: "Ctrl + F11" }), " ", "to exit fullscreen"] }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(EditorChrome, { className: className, currentWorkspace: currentWorkspace, centerPanelView: centerPanelView, editContext: editContext, showAgentsPanel: showAgentsPanel, handleSetShowAgentsPanel: handleSetShowAgentsPanel, workspaceId: workspaceId,
|
|
4486
|
-
// Legacy props for backwards compatibility
|
|
4487
|
-
currentView: currentView, viewName: viewName }), isTourActive && (_jsx(Tour, { tourStopCallback: () => {
|
|
4475
|
+
}, "data-testid": "fullscreen-hint-overlay", children: _jsxs("div", { className: "fixed top-6 left-1/2 -translate-x-1/2 transform rounded-full bg-black/60 px-6 py-2.5 text-sm font-medium text-white shadow-2xl backdrop-blur-md transition-all duration-500", children: ["Press", " ", _jsx("kbd", { className: "mx-1 rounded bg-white/20 px-1.5 py-0.5 text-xs font-semibold", children: "Ctrl + F11" }), " ", "to exit fullscreen"] }) }))] })) : (_jsxs(_Fragment, { children: [_jsx(EditorChrome, { className: className, currentWorkspace: currentWorkspace, centerPanelView: centerPanelView, editContext: editContext, showAgentsPanel: showAgentsPanel, handleSetShowAgentsPanel: handleSetShowAgentsPanel, workspaceId: workspaceId }), isTourActive && (_jsx(Tour, { tourStopCallback: () => {
|
|
4488
4476
|
setIsTourActive(false);
|
|
4489
4477
|
// Remove tour state from URL
|
|
4490
4478
|
// Use history.replaceState instead of router.replace to avoid triggering React navigation
|
|
@@ -4495,7 +4483,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
|
|
|
4495
4483
|
? `${window.location.pathname}?${queryString}`
|
|
4496
4484
|
: window.location.pathname;
|
|
4497
4485
|
window.history.replaceState(null, "", newUrl);
|
|
4498
|
-
}, configuration: configuration, restoredFromUrl: tourRestoredRef.current })), _jsx(GuidanceOverlay, {}), _jsx(AgentDialogHandler, {
|
|
4486
|
+
}, configuration: configuration, restoredFromUrl: tourRestoredRef.current })), _jsx(GuidanceOverlay, {}), _jsx(AgentDialogHandler, {})] }));
|
|
4499
4487
|
return (_jsx(LicenseProvider, { children: _jsx("div", { className: `editor h-full w-full`, children: _jsx(OperationsContextProvider, { value: operationsContext.context, children: _jsx(FieldsEditContextProvider, { value: fieldsEditContext, children: _jsxs(EditContextProvider, { value: editContext, children: [_jsx(DevModeIndicator, {}), startupChecks.state === "loading" && (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-white/70 backdrop-blur-[1px]", children: _jsx("div", { className: "flex items-center gap-3 rounded-md border border-gray-200 bg-white px-4 py-3 text-gray-700 shadow-sm", children: _jsx(Spinner, { size: "xl" }) }) })), editContext.isRefreshing && (_jsx("div", { className: "pointer-events-none fixed right-0 bottom-0 flex h-24 w-24 items-center justify-center text-gray-600 opacity-50 select-none", children: _jsx(Spinner, {}) })), (currentWorkspace.id === "agents" ||
|
|
4500
4488
|
currentWorkspace.id === "taskboard") &&
|
|
4501
4489
|
showAgentsWorkspaceEditor && (_jsx(AgentsSlotContextBridgeHost, { slots: editorSlots })), startupChecks.state !== "loading" && (children || editorUi), startupChecks.state !== "loading" && dialog, _jsx(Toaster, { position: "top-center" }), " ", _jsx(ConfirmationDialog, { ref: confirmationDialogRef }), _jsx(ConcurrentUserLimitDialog, { open: concurrentUserLimitError !== null, onOpenChange: (open) => {
|