@parhelia/core 0.3.12771 → 0.3.12788

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 (574) hide show
  1. package/dist/agents-view/AgentCard.js +1 -5
  2. package/dist/agents-view/AgentCard.js.map +1 -1
  3. package/dist/agents-view/AgentsView.js +1 -1
  4. package/dist/agents-view/AgentsView.js.map +1 -1
  5. package/dist/components/ActionButton.d.ts +7 -0
  6. package/dist/components/ActionButton.js +2 -2
  7. package/dist/components/ActionButton.js.map +1 -1
  8. package/dist/components/MarkdownDisplay.js +1 -1
  9. package/dist/components/ui/CardConnector.js +1 -1
  10. package/dist/components/ui/LanguageSelectionGrid.js +1 -1
  11. package/dist/components/ui/LanguageSelector.js +3 -3
  12. package/dist/components/ui/LanguageSelector.js.map +1 -1
  13. package/dist/components/ui/PlaceholderItemSelector.js +1 -1
  14. package/dist/components/ui/alert.d.ts +1 -1
  15. package/dist/components/ui/button.d.ts +2 -2
  16. package/dist/components/ui/card.js +1 -1
  17. package/dist/components/ui/close-button.d.ts +1 -1
  18. package/dist/components/ui/context-menu.js +1 -1
  19. package/dist/components/ui/copy-button.js +1 -1
  20. package/dist/components/ui/delete-button.d.ts +1 -1
  21. package/dist/components/ui/paste-button.js +1 -1
  22. package/dist/components/ui/popover.d.ts +1 -0
  23. package/dist/components/ui/popover.js +16 -7
  24. package/dist/components/ui/popover.js.map +1 -1
  25. package/dist/components/ui/sonner.js +1 -1
  26. package/dist/components/ui/upload-button.js +1 -1
  27. package/dist/config/config.js +18 -4
  28. package/dist/config/config.js.map +1 -1
  29. package/dist/editor/ConcurrentUserLimitDialog.js +1 -1
  30. package/dist/editor/ContentTree.d.ts +12 -1
  31. package/dist/editor/ContentTree.js +20 -3
  32. package/dist/editor/ContentTree.js.map +1 -1
  33. package/dist/editor/FieldActionsOverlay.js.map +1 -1
  34. package/dist/editor/FieldHistory.d.ts +15 -1
  35. package/dist/editor/FieldHistory.js +85 -52
  36. package/dist/editor/FieldHistory.js.map +1 -1
  37. package/dist/editor/FieldList.js +5 -2
  38. package/dist/editor/FieldList.js.map +1 -1
  39. package/dist/editor/FieldListField.js +7 -2
  40. package/dist/editor/FieldListField.js.map +1 -1
  41. package/dist/editor/FieldListFieldWithFallbacks.js +1 -1
  42. package/dist/editor/GlobalMenuBar.js +1 -1
  43. package/dist/editor/ItemInfo.js +2 -2
  44. package/dist/editor/ItemInfo.js.map +1 -1
  45. package/dist/editor/LinkEditorDialog.js +1 -1
  46. package/dist/editor/MigrationsView.js +1 -1
  47. package/dist/editor/PictureCropper.js +1 -1
  48. package/dist/editor/PictureCropper.js.map +1 -1
  49. package/dist/editor/SetupWizard.js.map +1 -1
  50. package/dist/editor/WorkspaceTitleSwitcher.js +1 -1
  51. package/dist/editor/ai/AgentImageCopyButton.d.ts +6 -0
  52. package/dist/editor/ai/AgentImageCopyButton.js +93 -0
  53. package/dist/editor/ai/AgentImageCopyButton.js.map +1 -0
  54. package/dist/editor/ai/AgentSharingSection.js +1 -1
  55. package/dist/editor/ai/Agents.d.ts +2 -2
  56. package/dist/editor/ai/Agents.js +2 -10
  57. package/dist/editor/ai/Agents.js.map +1 -1
  58. package/dist/editor/ai/GuidanceOverlay.js +1 -1
  59. package/dist/editor/ai/GuidanceOverlay.js.map +1 -1
  60. package/dist/editor/ai/InlineAiDialog.js +1 -1
  61. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  62. package/dist/editor/ai/InlineAiTrigger.js +1 -1
  63. package/dist/editor/ai/MediaImage.js +2 -1
  64. package/dist/editor/ai/MediaImage.js.map +1 -1
  65. package/dist/editor/ai/agentActivitySummary.js.map +1 -1
  66. package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
  67. package/dist/editor/ai/dialogs/AgentDialogHandler.js +103 -6
  68. package/dist/editor/ai/dialogs/AgentDialogHandler.js.map +1 -1
  69. package/dist/editor/ai/dialogs/QuestionnaireInline.js +1 -1
  70. package/dist/editor/ai/dialogs/agentDialogTypes.d.ts +21 -0
  71. package/dist/editor/ai/dialogs/agentDialogTypes.js +3 -1
  72. package/dist/editor/ai/dialogs/agentDialogTypes.js.map +1 -1
  73. package/dist/editor/ai/dialogs/offscreenPageCapture.d.ts +14 -1
  74. package/dist/editor/ai/dialogs/offscreenPageCapture.js +95 -27
  75. package/dist/editor/ai/dialogs/offscreenPageCapture.js.map +1 -1
  76. package/dist/editor/ai/terminal/agentCost.d.ts +1 -0
  77. package/dist/editor/ai/terminal/agentCost.js +10 -3
  78. package/dist/editor/ai/terminal/agentCost.js.map +1 -1
  79. package/dist/editor/ai/terminal/agentSessionSelectors.js.map +1 -1
  80. package/dist/editor/ai/terminal/agentSessionState.js +4 -1
  81. package/dist/editor/ai/terminal/agentSessionState.js.map +1 -1
  82. package/dist/editor/ai/terminal/components/AgentCostDisplay.d.ts +1 -1
  83. package/dist/editor/ai/terminal/components/AgentCostDisplay.js +3 -3
  84. package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
  85. package/dist/editor/ai/terminal/components/AgentDocumentList.js +2 -2
  86. package/dist/editor/ai/terminal/components/AgentDocumentList.js.map +1 -1
  87. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
  88. package/dist/editor/ai/terminal/components/AgentMemoryPanel.d.ts +22 -5
  89. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js +102 -19
  90. package/dist/editor/ai/terminal/components/AgentMemoryPanel.js.map +1 -1
  91. package/dist/editor/ai/terminal/components/AgentProfileModelSettingsSection.js +1 -1
  92. package/dist/editor/ai/terminal/components/AgentProfileSwitcher.js +1 -1
  93. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +8 -3
  94. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
  95. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +46 -6
  96. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  97. package/dist/editor/ai/terminal/components/AgentRunStatusBanners.js +1 -1
  98. package/dist/editor/ai/terminal/components/AgentSettingsContent.js +1 -1
  99. package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.d.ts +1 -0
  100. package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.js.map +1 -1
  101. package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js +1 -1
  102. package/dist/editor/ai/terminal/components/AgentTerminalContextPanels.js.map +1 -1
  103. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +1 -1
  104. package/dist/editor/ai/terminal/components/AgentTerminalMessageGroups.js +1 -1
  105. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +1 -1
  106. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
  107. package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +1 -1
  108. package/dist/editor/ai/terminal/components/AgentTerminalView.js +1 -1
  109. package/dist/editor/ai/terminal/components/AiResponseMessage.js +1 -1
  110. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  111. package/dist/editor/ai/terminal/components/ContextInfoBar.d.ts +2 -1
  112. package/dist/editor/ai/terminal/components/ContextInfoBar.js +2 -2
  113. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  114. package/dist/editor/ai/terminal/components/EditOperationsPanel.js +1 -1
  115. package/dist/editor/ai/terminal/components/QuestionnaireRecap.d.ts +2 -2
  116. package/dist/editor/ai/terminal/components/ToolCallDisplay.js +3 -2
  117. package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/UserMessage.js +1 -1
  119. package/dist/editor/ai/terminal/useAgentContextDisplayNames.d.ts +2 -0
  120. package/dist/editor/ai/terminal/useAgentContextDisplayNames.js +73 -29
  121. package/dist/editor/ai/terminal/useAgentContextDisplayNames.js.map +1 -1
  122. package/dist/editor/ai/terminal/useAgentEditorContextPipeline.d.ts +1 -0
  123. package/dist/editor/ai/terminal/useAgentInlineDialogPipeline.d.ts +1 -1
  124. package/dist/editor/ai/terminal/useAgentLoader.js +5 -2
  125. package/dist/editor/ai/terminal/useAgentLoader.js.map +1 -1
  126. package/dist/editor/ai/terminal/useAgentPromptComposerSurface.d.ts +2 -2
  127. package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.d.ts +2 -0
  128. package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.js +5 -3
  129. package/dist/editor/ai/terminal/useAgentPromptQueueSocketHandler.js.map +1 -1
  130. package/dist/editor/ai/terminal/useAgentRunMessagePipeline.d.ts +4 -4
  131. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +3 -0
  132. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
  133. package/dist/editor/ai/terminal/useAgentSettingsPanel.d.ts +31 -31
  134. package/dist/editor/ai/terminal/useAgentSettleCompletedRun.js.map +1 -1
  135. package/dist/editor/ai/terminal/useAgentStopCommand.js +4 -0
  136. package/dist/editor/ai/terminal/useAgentStopCommand.js.map +1 -1
  137. package/dist/editor/ai/terminal/useAgentStreamPipeline.js +1 -0
  138. package/dist/editor/ai/terminal/useAgentStreamPipeline.js.map +1 -1
  139. package/dist/editor/ai/terminal/useAgentTerminalChrome.d.ts +1 -0
  140. package/dist/editor/ai/terminal/useAgentTerminalChrome.js +2 -2
  141. package/dist/editor/ai/terminal/useAgentTerminalChrome.js.map +1 -1
  142. package/dist/editor/ai/terminal/useAgentTerminalController.js +3 -1
  143. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  144. package/dist/editor/ai/useAgentPanes.js.map +1 -1
  145. package/dist/editor/ai/useAgentStatus.js.map +1 -1
  146. package/dist/editor/ai/useInlineAiPosition.js.map +1 -1
  147. package/dist/editor/ai-image-editor/AiImageEditorDialog.js +42 -23
  148. package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
  149. package/dist/editor/bridge/BridgeClient.js +6 -6
  150. package/dist/editor/bridge/BridgeClient.js.map +1 -1
  151. package/dist/editor/bridge/protocol.d.ts +26 -0
  152. package/dist/editor/bridge/protocol.js +1 -1
  153. package/dist/editor/bridge/protocol.js.map +1 -1
  154. package/dist/editor/client/AboutDialog.js +1 -1
  155. package/dist/editor/client/EditorShell.js +125 -90
  156. package/dist/editor/client/EditorShell.js.map +1 -1
  157. package/dist/editor/client/SessionExpiredOverlay.js +1 -1
  158. package/dist/editor/client/SessionExpiredOverlay.js.map +1 -1
  159. package/dist/editor/client/editContext.d.ts +26 -3
  160. package/dist/editor/client/editContext.js.map +1 -1
  161. package/dist/editor/client/fieldModificationStore.js +0 -21
  162. package/dist/editor/client/fieldModificationStore.js.map +1 -1
  163. package/dist/editor/client/hooks/useClientInfoRegistration.d.ts +13 -0
  164. package/dist/editor/client/hooks/useClientInfoRegistration.js +38 -0
  165. package/dist/editor/client/hooks/useClientInfoRegistration.js.map +1 -0
  166. package/dist/editor/client/itemsRepository.js +1 -34
  167. package/dist/editor/client/itemsRepository.js.map +1 -1
  168. package/dist/editor/client/operations.d.ts +4 -2
  169. package/dist/editor/client/operations.js +89 -65
  170. package/dist/editor/client/operations.js.map +1 -1
  171. package/dist/editor/client/pageModelBuilder.js +7 -1
  172. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  173. package/dist/editor/client/ui/EditorChrome.d.ts +1 -0
  174. package/dist/editor/client/ui/EditorChrome.js +7 -2
  175. package/dist/editor/client/ui/EditorChrome.js.map +1 -1
  176. package/dist/editor/client/ui/FullscreenControls.d.ts +3 -0
  177. package/dist/editor/client/ui/FullscreenControls.js +7 -12
  178. package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
  179. package/dist/editor/client/undoTargetResolution.d.ts +28 -0
  180. package/dist/editor/client/undoTargetResolution.js +69 -0
  181. package/dist/editor/client/undoTargetResolution.js.map +1 -0
  182. package/dist/editor/commands/componentCommands.js +2 -2
  183. package/dist/editor/commands/componentCommands.js.map +1 -1
  184. package/dist/editor/commands/customCommandConverter.js.map +1 -1
  185. package/dist/editor/commands/itemCommands.js +19 -2
  186. package/dist/editor/commands/itemCommands.js.map +1 -1
  187. package/dist/editor/componentTreeHelper.js +13 -7
  188. package/dist/editor/componentTreeHelper.js.map +1 -1
  189. package/dist/editor/content-tree/IndicatorSettings.js +1 -1
  190. package/dist/editor/content-tree/TreeOptions.js +1 -1
  191. package/dist/editor/context-menu/InsertMenu.js +1 -1
  192. package/dist/editor/editor-warnings/NoLanguageWriteAccess.js +1 -1
  193. package/dist/editor/field-types/AttachmentEditor.js +7 -0
  194. package/dist/editor/field-types/AttachmentEditor.js.map +1 -1
  195. package/dist/editor/field-types/LinkFieldEditor.js +1 -1
  196. package/dist/editor/field-types/PictureFieldEditor.js +21 -21
  197. package/dist/editor/field-types/PictureFieldEditor.js.map +1 -1
  198. package/dist/editor/field-types/RichTextEditor.js +1 -1
  199. package/dist/editor/field-types/RichTextEditorComponent.js +6 -0
  200. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  201. package/dist/editor/field-types/SingleLineText.js +0 -34
  202. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  203. package/dist/editor/field-types/richtext/bridgeRichTextProfile.d.ts +1 -1
  204. package/dist/editor/field-types/richtext/components/EditorDropdown.js +1 -1
  205. package/dist/editor/field-types/richtext/components/ReactSlate.js +1 -1
  206. package/dist/editor/field-types/richtext/components/SimpleDropdown.js +1 -1
  207. package/dist/editor/field-types/richtext/components/SimpleToolbar.js +1 -1
  208. package/dist/editor/field-types/richtext/hooks/useRichTextProfile.js.map +1 -1
  209. package/dist/editor/field-types/richtext/utils/conversion.js +2 -4
  210. package/dist/editor/field-types/richtext/utils/conversion.js.map +1 -1
  211. package/dist/editor/field-types/richtext/utils/plugins.d.ts +1 -0
  212. package/dist/editor/field-types/richtext/utils/plugins.js +12 -0
  213. package/dist/editor/field-types/richtext/utils/plugins.js.map +1 -1
  214. package/dist/editor/field-types/richtext/utils/profileMapper.js.map +1 -1
  215. package/dist/editor/field-types/useFormFieldCaretPresence.js.map +1 -1
  216. package/dist/editor/fieldValueDiagnostics.js.map +1 -1
  217. package/dist/editor/insertOptionCompatibility.d.ts +7 -0
  218. package/dist/editor/insertOptionCompatibility.js +15 -0
  219. package/dist/editor/insertOptionCompatibility.js.map +1 -0
  220. package/dist/editor/media-selector/MediaFolderBrowser.js +26 -4
  221. package/dist/editor/media-selector/MediaFolderBrowser.js.map +1 -1
  222. package/dist/editor/media-selector/Preview.js +6 -11
  223. package/dist/editor/media-selector/Preview.js.map +1 -1
  224. package/dist/editor/media-selector/Thumbnails.js +31 -3
  225. package/dist/editor/media-selector/Thumbnails.js.map +1 -1
  226. package/dist/editor/media-selector/TreeSelector.js +53 -6
  227. package/dist/editor/media-selector/TreeSelector.js.map +1 -1
  228. package/dist/editor/media-selector/UploadZone.d.ts +1 -2
  229. package/dist/editor/media-selector/UploadZone.js +3 -4
  230. package/dist/editor/media-selector/UploadZone.js.map +1 -1
  231. package/dist/editor/media-selector/mediaItemDrag.d.ts +28 -0
  232. package/dist/editor/media-selector/mediaItemDrag.js +42 -0
  233. package/dist/editor/media-selector/mediaItemDrag.js.map +1 -0
  234. package/dist/editor/menubar/ActiveUsers.js +6 -3
  235. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  236. package/dist/editor/menubar/GenericToolbar.js +1 -1
  237. package/dist/editor/menubar/GenericToolbar.js.map +1 -1
  238. package/dist/editor/menubar/ItemActionsMenu.js +1 -1
  239. package/dist/editor/menubar/ItemLanguageVersion.js +1 -1
  240. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  241. package/dist/editor/menubar/OperationsIndicator.js +1 -1
  242. package/dist/editor/menubar/PageSelector.d.ts +2 -1
  243. package/dist/editor/menubar/PageSelector.js +14 -4
  244. package/dist/editor/menubar/PageSelector.js.map +1 -1
  245. package/dist/editor/menubar/VersionPreviewCard.js +1 -1
  246. package/dist/editor/menubar/VersionSelector.js +1 -1
  247. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +1 -1
  248. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.d.ts +3 -1
  249. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +6 -7
  250. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
  251. package/dist/editor/menubar/toolbar-sections/EditControls.js +5 -5
  252. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  253. package/dist/editor/menubar/toolbar-sections/InsertControls.js +1 -1
  254. package/dist/editor/menubar/toolbar-sections/InsertControls.js.map +1 -1
  255. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +14 -4
  256. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  257. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.d.ts +1 -0
  258. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js +14 -0
  259. package/dist/editor/menubar/toolbar-sections/PreviewModeControl.js.map +1 -0
  260. package/dist/editor/menubar/toolbar-sections/RefreshPageControl.d.ts +7 -0
  261. package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js +44 -0
  262. package/dist/editor/menubar/toolbar-sections/RefreshPageControl.js.map +1 -0
  263. package/dist/editor/menubar/toolbar-sections/ReviewCommands.js +1 -1
  264. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +1 -1
  265. package/dist/editor/menubar/toolbar-sections/ViewportControls.d.ts +7 -0
  266. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +16 -8
  267. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  268. package/dist/editor/menubar/toolbar-sections/index.d.ts +1 -0
  269. package/dist/editor/menubar/toolbar-sections/index.js +1 -0
  270. package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
  271. package/dist/editor/notifications/NotificationCenter.js +1 -1
  272. package/dist/editor/notifications/WatchButton.js +1 -1
  273. package/dist/editor/notifications/notificationListState.d.ts +1 -1
  274. package/dist/editor/notifications/notificationRoutes.js.map +1 -1
  275. package/dist/editor/notifications/useNotifications.d.ts +1 -1
  276. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +6 -3
  277. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  278. package/dist/editor/page-editor-chrome/CommentHighlightings.js +1 -1
  279. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js +51 -23
  280. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js.map +1 -1
  281. package/dist/editor/page-editor-chrome/EmptyImageFieldIndicators.js +1 -1
  282. package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js.map +1 -1
  283. package/dist/editor/page-editor-chrome/FieldActionIndicators.js +1 -1
  284. package/dist/editor/page-editor-chrome/FieldEditedIndicators.js +1 -1
  285. package/dist/editor/page-editor-chrome/FrameMenu.js +1 -1
  286. package/dist/editor/page-editor-chrome/FrameMenus.js +1 -1
  287. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.d.ts +58 -0
  288. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js +709 -0
  289. package/dist/editor/page-editor-chrome/InlineFieldHistoryButton.js.map +1 -0
  290. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js +12 -2
  291. package/dist/editor/page-editor-chrome/LockedFieldIndicator.js.map +1 -1
  292. package/dist/editor/page-editor-chrome/PageEditorChrome.js +7 -2
  293. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  294. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js +57 -10
  295. package/dist/editor/page-editor-chrome/PictureEditorOverlay.js.map +1 -1
  296. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +1 -8
  297. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  298. package/dist/editor/page-editor-chrome/PlaceholderDropZones.d.ts +1 -0
  299. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +10 -3
  300. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  301. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +5 -2
  302. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  303. package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js +7 -2
  304. package/dist/editor/page-editor-chrome/SuggestionVariantSwitcher.js.map +1 -1
  305. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.d.ts +5 -2
  306. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js +153 -51
  307. package/dist/editor/page-editor-chrome/VersionDiffHighlightings.js.map +1 -1
  308. package/dist/editor/page-editor-chrome/componentDragObject.d.ts +5 -4
  309. package/dist/editor/page-editor-chrome/componentDragObject.js +8 -8
  310. package/dist/editor/page-editor-chrome/componentDragObject.js.map +1 -1
  311. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  312. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +7 -0
  313. package/dist/editor/page-editor-chrome/overlay/geometry.js +35 -17
  314. package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
  315. package/dist/editor/page-editor-chrome/overlay/placeholderZones.js +4 -9
  316. package/dist/editor/page-editor-chrome/overlay/placeholderZones.js.map +1 -1
  317. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js +18 -70
  318. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.js.map +1 -1
  319. package/dist/editor/page-viewer/MiniMap.js +1 -1
  320. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  321. package/dist/editor/page-viewer/MinimapDropTargets.js +1 -1
  322. package/dist/editor/page-viewer/PageViewer.js +5 -3
  323. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  324. package/dist/editor/page-viewer/PageViewerFrame.js +256 -125
  325. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  326. package/dist/editor/page-viewer/bridgeFieldPatch.js +0 -45
  327. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  328. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.d.ts +12 -0
  329. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js +27 -0
  330. package/dist/editor/page-viewer/bridgeKeyboardShortcuts.js.map +1 -1
  331. package/dist/editor/page-viewer/fullscreenPagePath.d.ts +1 -0
  332. package/dist/editor/page-viewer/fullscreenPagePath.js +11 -0
  333. package/dist/editor/page-viewer/fullscreenPagePath.js.map +1 -0
  334. package/dist/editor/page-viewer/internalLinkNavigation.d.ts +9 -0
  335. package/dist/editor/page-viewer/internalLinkNavigation.js +104 -0
  336. package/dist/editor/page-viewer/internalLinkNavigation.js.map +1 -0
  337. package/dist/editor/page-viewer/pageViewContext.d.ts +3 -1
  338. package/dist/editor/page-viewer/pageViewContext.js +14 -10
  339. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  340. package/dist/editor/page-viewer/parentBridgeInjection.d.ts +6 -1
  341. package/dist/editor/page-viewer/parentBridgeInjection.js +117 -24
  342. package/dist/editor/page-viewer/parentBridgeInjection.js.map +1 -1
  343. package/dist/editor/page-viewer/renderUrl.d.ts +1 -1
  344. package/dist/editor/personalization/ConditionTreeEditor.js +1 -1
  345. package/dist/editor/personalization/ConditionTreeEditor.js.map +1 -1
  346. package/dist/editor/personalization/PersonalizationPanel.js +1 -1
  347. package/dist/editor/personalization/TreeItemPicker.js +7 -1
  348. package/dist/editor/personalization/TreeItemPicker.js.map +1 -1
  349. package/dist/editor/personalization/utils.js.map +1 -1
  350. package/dist/editor/reviews/CommentEditor.js +1 -1
  351. package/dist/editor/reviews/CommentEditor.js.map +1 -1
  352. package/dist/editor/reviews/CommentView.js +1 -1
  353. package/dist/editor/reviews/Comments.js +5 -20
  354. package/dist/editor/reviews/Comments.js.map +1 -1
  355. package/dist/editor/reviews/CreateReviewDialog.js +1 -1
  356. package/dist/editor/reviews/DecisionsMatrix.js +1 -1
  357. package/dist/editor/reviews/EditReviewSettingsDialog.js +1 -1
  358. package/dist/editor/reviews/FeedbackFilters.d.ts +16 -0
  359. package/dist/editor/reviews/FeedbackFilters.js +45 -0
  360. package/dist/editor/reviews/FeedbackFilters.js.map +1 -0
  361. package/dist/editor/reviews/FeedbackModeIntro.js +2 -2
  362. package/dist/editor/reviews/FeedbackModeIntro.js.map +1 -1
  363. package/dist/editor/reviews/MentionText.js +1 -1
  364. package/dist/editor/reviews/ReviewCard.js +1 -1
  365. package/dist/editor/reviews/ReviewDetail.js +5 -1
  366. package/dist/editor/reviews/ReviewDetail.js.map +1 -1
  367. package/dist/editor/reviews/ReviewItemsPanel.js +74 -11
  368. package/dist/editor/reviews/ReviewItemsPanel.js.map +1 -1
  369. package/dist/editor/reviews/SecretPhraseInput.js +1 -1
  370. package/dist/editor/reviews/suggestedEditState.js.map +1 -1
  371. package/dist/editor/reviews/useMultiReview.js +45 -17
  372. package/dist/editor/reviews/useMultiReview.js.map +1 -1
  373. package/dist/editor/reviews/useReviews.js +24 -5
  374. package/dist/editor/reviews/useReviews.js.map +1 -1
  375. package/dist/editor/services/agentService.d.ts +91 -10
  376. package/dist/editor/services/agentService.js +100 -27
  377. package/dist/editor/services/agentService.js.map +1 -1
  378. package/dist/editor/services/aiService.js.map +1 -1
  379. package/dist/editor/services/contentService.d.ts +3 -1
  380. package/dist/editor/services/contentService.js +8 -0
  381. package/dist/editor/services/contentService.js.map +1 -1
  382. package/dist/editor/services/contextService.js.map +1 -1
  383. package/dist/editor/services/editService.js.map +1 -1
  384. package/dist/editor/services/favouritesService.d.ts +0 -7
  385. package/dist/editor/services/favouritesService.js +0 -7
  386. package/dist/editor/services/favouritesService.js.map +1 -1
  387. package/dist/editor/services/indexService.d.ts +3 -1
  388. package/dist/editor/services/indexService.js +8 -0
  389. package/dist/editor/services/indexService.js.map +1 -1
  390. package/dist/editor/services/localStorageService.js.map +1 -1
  391. package/dist/editor/services/reviewsService.js.map +1 -1
  392. package/dist/editor/services/serviceHelper.d.ts +3 -0
  393. package/dist/editor/services/serviceHelper.js +51 -1
  394. package/dist/editor/services/serviceHelper.js.map +1 -1
  395. package/dist/editor/services/suggestedEditsService.js.map +1 -1
  396. package/dist/editor/services/systemService.d.ts +10 -0
  397. package/dist/editor/services/systemService.js +3 -0
  398. package/dist/editor/services/systemService.js.map +1 -1
  399. package/dist/editor/services/textCompletionService.js +5 -0
  400. package/dist/editor/services/textCompletionService.js.map +1 -1
  401. package/dist/editor/settings/About.js +2 -4
  402. package/dist/editor/settings/About.js.map +1 -1
  403. package/dist/editor/settings/IndexOverview.js +3 -2
  404. package/dist/editor/settings/IndexOverview.js.map +1 -1
  405. package/dist/editor/settings/SettingsBreadcrumb.js +1 -1
  406. package/dist/editor/settings/SettingsView.js +1 -1
  407. package/dist/editor/settings/StatusSummary.js +1 -1
  408. package/dist/editor/settings/index/IndexGenerationsSection.d.ts +8 -0
  409. package/dist/editor/settings/index/IndexGenerationsSection.js +93 -0
  410. package/dist/editor/settings/index/IndexGenerationsSection.js.map +1 -0
  411. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +1 -1
  412. package/dist/editor/settings/panels/AgentsPanel.js +1 -1
  413. package/dist/editor/settings/panels/CreateAgentProfileDialog.js +1 -1
  414. package/dist/editor/settings/panels/CreateJavaScriptToolDialog.js +1 -1
  415. package/dist/editor/settings/panels/CreateMcpServerDialog.js +1 -1
  416. package/dist/editor/settings/panels/JavaScriptToolsPanel.js +1 -1
  417. package/dist/editor/settings/panels/MemoriesPanel.d.ts +16 -0
  418. package/dist/editor/settings/panels/MemoriesPanel.js +291 -0
  419. package/dist/editor/settings/panels/MemoriesPanel.js.map +1 -0
  420. package/dist/editor/settings/panels/MemoryEntryDialog.d.ts +45 -0
  421. package/dist/editor/settings/panels/MemoryEntryDialog.js +167 -0
  422. package/dist/editor/settings/panels/MemoryEntryDialog.js.map +1 -0
  423. package/dist/editor/settings/panels/ModelsPanel.js +1 -1
  424. package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
  425. package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js +1 -1
  426. package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js.map +1 -1
  427. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +1 -1
  428. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  429. package/dist/editor/settings/panels/ProvidersPanel.js +1 -1
  430. package/dist/editor/settings/panels/RenderingHostsPanel.d.ts +2 -0
  431. package/dist/editor/settings/panels/RenderingHostsPanel.js +63 -0
  432. package/dist/editor/settings/panels/RenderingHostsPanel.js.map +1 -0
  433. package/dist/editor/settings/panels/SearchConfigPanel.js +6 -4
  434. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  435. package/dist/editor/settings/panels/StatusPanel.js +1 -1
  436. package/dist/editor/settings/panels/index.d.ts +2 -0
  437. package/dist/editor/settings/panels/index.js +2 -0
  438. package/dist/editor/settings/panels/index.js.map +1 -1
  439. package/dist/editor/setup-wizard/steps/CompleteStep.js +1 -1
  440. package/dist/editor/setup-wizard/steps/CreateSettingsStep.js +1 -1
  441. package/dist/editor/setup-wizard/steps/LicenseActivationStep.js +1 -1
  442. package/dist/editor/setup-wizard/steps/LicenseEmailStep.js +1 -1
  443. package/dist/editor/setup-wizard/steps/ModelSelectionStep.js +1 -1
  444. package/dist/editor/setup-wizard/steps/ProviderStep.js +1 -1
  445. package/dist/editor/sidebar/ComponentPalette.js +4 -4
  446. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  447. package/dist/editor/sidebar/ComponentTree.js +206 -113
  448. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  449. package/dist/editor/sidebar/ContentTreePanel.d.ts +2 -2
  450. package/dist/editor/sidebar/DictionaryEditor.js +1 -1
  451. package/dist/editor/sidebar/EditHistory.js +1 -1
  452. package/dist/editor/sidebar/Favorites.js.map +1 -1
  453. package/dist/editor/sidebar/NavigationPanelItem.js +1 -1
  454. package/dist/editor/sidebar/OperationItem.js +1 -1
  455. package/dist/editor/sidebar/Sessions.js +20 -9
  456. package/dist/editor/sidebar/Sessions.js.map +1 -1
  457. package/dist/editor/sidebar/Workbox.d.ts +8 -0
  458. package/dist/editor/sidebar/Workbox.js +94 -12
  459. package/dist/editor/sidebar/Workbox.js.map +1 -1
  460. package/dist/editor/sidebar/WorkboxFilters.d.ts +11 -0
  461. package/dist/editor/sidebar/WorkboxFilters.js +61 -0
  462. package/dist/editor/sidebar/WorkboxFilters.js.map +1 -0
  463. package/dist/editor/sidebar/WorkspaceRail.js +1 -1
  464. package/dist/editor/sidebar/useSharedComponentPublishState.js.map +1 -1
  465. package/dist/editor/template-wizard/TemplateBuilderDialog.js +1 -1
  466. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +1 -1
  467. package/dist/editor/tree-indicators/GutterColumns.js +1 -1
  468. package/dist/editor/tree-indicators/GutterContext.js +2 -2
  469. package/dist/editor/tree-indicators/GutterContext.js.map +1 -1
  470. package/dist/editor/ui/DragPreview.js.map +1 -1
  471. package/dist/editor/ui/ItemCollectionEditor.js +1 -1
  472. package/dist/editor/ui/ItemNameDialogNew.d.ts +11 -0
  473. package/dist/editor/ui/ItemNameDialogNew.js +12 -7
  474. package/dist/editor/ui/ItemNameDialogNew.js.map +1 -1
  475. package/dist/editor/ui/ItemSearch.js +1 -1
  476. package/dist/editor/ui/PerfectTree.d.ts +5 -1
  477. package/dist/editor/ui/PerfectTree.js +7 -5
  478. package/dist/editor/ui/PerfectTree.js.map +1 -1
  479. package/dist/editor/ui/PublishDialog.js +1 -1
  480. package/dist/editor/ui/PublishItemDialog.js +1 -1
  481. package/dist/editor/ui/PublishRestrictionsDialog.js +2 -2
  482. package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
  483. package/dist/editor/ui/RemoveComponentsConfirmMessage.js +1 -1
  484. package/dist/editor/ui/SimpleIconButton.d.ts +1 -1
  485. package/dist/editor/ui/SimpleTable.d.ts +5 -1
  486. package/dist/editor/ui/SimpleTable.js +5 -1
  487. package/dist/editor/ui/SimpleTable.js.map +1 -1
  488. package/dist/editor/ui/Spinner.js +1 -1
  489. package/dist/editor/ui/Spinner.js.map +1 -1
  490. package/dist/editor/ui/WorkboxItemsTable.js +49 -20
  491. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  492. package/dist/editor/utils/selectionContext.js.map +1 -1
  493. package/dist/editor/utils/sitecoreDate.js +8 -2
  494. package/dist/editor/utils/sitecoreDate.js.map +1 -1
  495. package/dist/editor/version-diff/versionDiffGeometryKeys.d.ts +10 -0
  496. package/dist/editor/version-diff/versionDiffGeometryKeys.js +16 -0
  497. package/dist/editor/version-diff/versionDiffGeometryKeys.js.map +1 -0
  498. package/dist/editor/version-diff/versionDiffHighlightStyles.d.ts +6 -0
  499. package/dist/editor/version-diff/versionDiffHighlightStyles.js +6 -0
  500. package/dist/editor/version-diff/versionDiffHighlightStyles.js.map +1 -1
  501. package/dist/editor/version-diff/versionDiffTargets.d.ts +40 -1
  502. package/dist/editor/version-diff/versionDiffTargets.js +176 -15
  503. package/dist/editor/version-diff/versionDiffTargets.js.map +1 -1
  504. package/dist/editor/views/ItemEditor.js +1 -1
  505. package/dist/editor/views/ItemEditorPane.js +1 -1
  506. package/dist/editor/views/ItemEditorPane.js.map +1 -1
  507. package/dist/editor/views/SingleEditView.js +1 -1
  508. package/dist/lib/pointerDrag.js.map +1 -1
  509. package/dist/lib/safelist.js +1 -1
  510. package/dist/licensing/FeatureGate.d.ts +1 -1
  511. package/dist/licensing/LicenseContext.js.map +1 -1
  512. package/dist/licensing/LicenseOverlay.js +1 -1
  513. package/dist/logging/consolePrefix.js.map +1 -1
  514. package/dist/revision.d.ts +2 -2
  515. package/dist/revision.js +2 -2
  516. package/dist/revision.js.map +1 -1
  517. package/dist/setup/services/setupWizardService.d.ts +3 -56
  518. package/dist/setup/services/setupWizardService.js +0 -43
  519. package/dist/setup/services/setupWizardService.js.map +1 -1
  520. package/dist/setup/wizard/steps/ImportModelDialog.js +1 -1
  521. package/dist/splash-screen/NewPage.js +1 -1
  522. package/dist/splash-screen/RecentPages.js +1 -1
  523. package/dist/task-board/TaskBoardWorkspace.js +5 -0
  524. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  525. package/dist/task-board/components/ItemCollectionEditorDialog.js +1 -1
  526. package/dist/task-board/components/ProjectDashboard.js +1 -1
  527. package/dist/task-board/components/ProjectGoalsPanel.js +1 -1
  528. package/dist/task-board/components/ProjectSettingsDialog.js +1 -1
  529. package/dist/task-board/components/TaskBoardBreadcrumb.js +1 -1
  530. package/dist/task-board/components/TaskBoardProjectListSidebar.js +1 -1
  531. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  532. package/dist/task-board/components/TaskBoardTitlebar.js +1 -1
  533. package/dist/task-board/components/TaskDetailPanel.js +1 -1
  534. package/dist/task-board/components/TaskReviewActions.js +1 -1
  535. package/dist/task-board/components/TaskRow.js +1 -1
  536. package/dist/task-board/components/TaskboardPersistentLogPanel.js +1 -1
  537. package/dist/task-board/components/WizardCommunicationCenter.js +1 -1
  538. package/dist/task-board/components/WizardTask.js +1 -1
  539. package/dist/task-board/components/WizardTaskDetailsPanel.js +1 -1
  540. package/dist/task-board/services/goalService.d.ts +1 -14
  541. package/dist/task-board/services/goalService.js +0 -10
  542. package/dist/task-board/services/goalService.js.map +1 -1
  543. package/dist/task-board/services/taskService.d.ts +0 -11
  544. package/dist/task-board/services/taskService.js +0 -3
  545. package/dist/task-board/services/taskService.js.map +1 -1
  546. package/dist/task-board/views/DependencyGraphView.d.ts +13 -0
  547. package/dist/task-board/views/DependencyGraphView.js +62 -11
  548. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  549. package/dist/task-board/views/ListView.js +1 -1
  550. package/dist/tour/Tour.js +1 -1
  551. package/dist/tour/Tour.js.map +1 -1
  552. package/dist/tour/default-tour.js +1 -1
  553. package/dist/tour/preview-tour.js +1 -1
  554. package/dist/types.d.ts +33 -9
  555. package/package.json +5 -4
  556. package/styles.css +4 -4
  557. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.d.ts +0 -5
  558. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js +0 -12
  559. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js.map +0 -1
  560. package/dist/editor/ai/terminal/components/AgentThinkingDots.d.ts +0 -5
  561. package/dist/editor/ai/terminal/components/AgentThinkingDots.js +0 -9
  562. package/dist/editor/ai/terminal/components/AgentThinkingDots.js.map +0 -1
  563. package/dist/editor/reviews/CommentsAndFeedback.d.ts +0 -8
  564. package/dist/editor/reviews/CommentsAndFeedback.js +0 -17
  565. package/dist/editor/reviews/CommentsAndFeedback.js.map +0 -1
  566. package/dist/editor/reviews/CreateReviewDetailsStep.d.ts +0 -53
  567. package/dist/editor/reviews/CreateReviewDetailsStep.js +0 -77
  568. package/dist/editor/reviews/CreateReviewDetailsStep.js.map +0 -1
  569. package/dist/splash-screen/ParheliaAssistantChat.d.ts +0 -8
  570. package/dist/splash-screen/ParheliaAssistantChat.js +0 -507
  571. package/dist/splash-screen/ParheliaAssistantChat.js.map +0 -1
  572. package/dist/splash-screen/SplashScreenAgentContext.d.ts +0 -28
  573. package/dist/splash-screen/SplashScreenAgentContext.js +0 -51
  574. package/dist/splash-screen/SplashScreenAgentContext.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React, { useState, useEffect, useLayoutEffect, useRef, useCallback, useMemo, startTransition, } from "react";
4
4
  import { toast } from "sonner";
5
5
  import { isPerfTraceActive, perfTracePaintStep, perfTraceStep, } from "../perfTrace";
@@ -18,6 +18,7 @@ import { executeFieldAction as executeFieldServerAction, connectSocket, getEditH
18
18
  import { emitAgentDocumentsChanged } from "../services/agentService";
19
19
  import { onSocketReconnect as onAgentSocketReconnect } from "../services/agentSubscriptionRegistry";
20
20
  import { useEditorWebSocket } from "./hooks/useEditorWebSocket";
21
+ import { useClientInfoRegistration } from "./hooks/useClientInfoRegistration";
21
22
  import { getEditorRealtime } from "./realtime/realtimeTransport";
22
23
  import { createEditorSocketDiagnostics, } from "./socketDiagnostics";
23
24
  import { localStorageService } from "../services/localStorageService";
@@ -262,6 +263,16 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
262
263
  suppressNextSelectionAutoScrollRef.current = false;
263
264
  return suppressed;
264
265
  }, []);
266
+ // Armed by the post-operation auto-focus below for the same reason as
267
+ // selectWithoutAutoScroll: a moved component's field still measures at its
268
+ // pre-move rect until the canvas refresh lands, so the focused-field
269
+ // auto-scroll must skip exactly that programmatic focus.
270
+ const suppressNextFocusedFieldAutoScrollRef = useRef(false);
271
+ const consumeNextFocusedFieldAutoScrollSuppression = useCallback(() => {
272
+ const suppressed = suppressNextFocusedFieldAutoScrollRef.current;
273
+ suppressNextFocusedFieldAutoScrollRef.current = false;
274
+ return suppressed;
275
+ }, []);
265
276
  const insertingHoldCleanupRef = useRef(null);
266
277
  // The drop operation's HTTP resolve only means the server accepted it — the
267
278
  // canvas re-render (fetch + DOM patch) lands seconds later. Keep the
@@ -537,10 +548,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
537
548
  // Keep a synchronous ref for "what is currently active" so callers can update it
538
549
  // before React state has applied (e.g. setActiveSlot -> loadItem).
539
550
  const activeSlotIdRef = useRef(activeSlotId);
540
- useEffect(() => {
541
- activeSlotIdRef.current = activeSlotId;
542
- }, [activeSlotId]);
543
551
  const [slotContexts, setSlotContexts] = useState(() => new Map());
552
+ const slotContextsRef = useRef(slotContexts);
553
+ const lastActiveSlotContextRef = useRef(null);
544
554
  const fieldModificationStoresBySlotRef = useRef(new Map());
545
555
  const [fieldModificationStoreRegistryRevision, setFieldModificationStoreRegistryRevision,] = useState(0);
546
556
  const getFieldModificationStoreForSlot = useCallback((slotId) => {
@@ -597,15 +607,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
597
607
  // Don't persist editorSlots to localStorage - always start with 0 slots in a new window
598
608
  // Ensure we always have a valid activeSlotId when slots change
599
609
  useEffect(() => {
600
- if (editorSlots.length === 0) {
601
- setActiveSlotId(null);
610
+ const currentActiveSlotId = activeSlotIdRef.current;
611
+ const nextActiveSlotId = currentActiveSlotId &&
612
+ editorSlots.some((slot) => slot.slotId === currentActiveSlotId)
613
+ ? currentActiveSlotId
614
+ : (editorSlots[0]?.slotId ?? null);
615
+ if (currentActiveSlotId === nextActiveSlotId)
602
616
  return;
603
- }
604
- setActiveSlotId((prev) => {
605
- if (prev && editorSlots.some((s) => s.slotId === prev))
606
- return prev;
607
- return editorSlots[0]?.slotId ?? null;
608
- });
617
+ activeSlotIdRef.current = nextActiveSlotId;
618
+ setActiveSlotId(nextActiveSlotId);
609
619
  }, [editorSlots]);
610
620
  const currentItemRef = useRef(undefined);
611
621
  useEffect(() => {
@@ -725,6 +735,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
725
735
  const [centerPanelView, setCenterPanelView] = useState();
726
736
  const [timings, setTimings] = useState({});
727
737
  const [revision, setRevision] = useState();
738
+ const [fullReloadToken, setFullReloadToken] = useState(0);
728
739
  // moved into useWorkbox
729
740
  // Initialize tour state from URL parameter to survive navigation/remounts
730
741
  // Memoize to avoid triggering Router state updates during render
@@ -965,32 +976,29 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
965
976
  });
966
977
  }, [itemsRepository, refreshParheliaSettings]);
967
978
  const registerSlotContext = useCallback((slotId, ctx) => {
968
- setSlotContexts((prev) => {
969
- if (prev.get(slotId) === ctx)
970
- return prev;
971
- const next = new Map(prev);
972
- next.set(slotId, ctx);
973
- return next;
974
- });
979
+ const current = slotContextsRef.current;
980
+ if (current.get(slotId) === ctx)
981
+ return;
982
+ const next = new Map(current);
983
+ next.set(slotId, ctx);
984
+ slotContextsRef.current = next;
985
+ setSlotContexts(next);
975
986
  }, []);
976
987
  const unregisterSlotContext = useCallback((slotId) => {
977
- setSlotContexts((prev) => {
978
- if (!prev.has(slotId))
979
- return prev;
980
- if (slotId === activeSlotIdRef.current) {
981
- const activeCtx = prev.get(slotId);
982
- if (activeCtx) {
983
- lastActiveSlotContextRef.current = activeCtx;
984
- }
988
+ const current = slotContextsRef.current;
989
+ if (!current.has(slotId))
990
+ return;
991
+ if (slotId === activeSlotIdRef.current) {
992
+ const activeCtx = current.get(slotId);
993
+ if (activeCtx) {
994
+ lastActiveSlotContextRef.current = activeCtx;
985
995
  }
986
- const next = new Map(prev);
987
- next.delete(slotId);
988
- return next;
989
- });
996
+ }
997
+ const next = new Map(current);
998
+ next.delete(slotId);
999
+ slotContextsRef.current = next;
1000
+ setSlotContexts(next);
990
1001
  }, []);
991
- const slotContextsRef = useRef(slotContexts);
992
- const lastActiveSlotContextRef = useRef(null);
993
- slotContextsRef.current = slotContexts;
994
1002
  const getActiveSlotContext = useCallback(() => {
995
1003
  const activeId = activeSlotIdRef.current;
996
1004
  if (!activeId)
@@ -1144,7 +1152,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1144
1152
  }
1145
1153
  // Delay toast slightly to give user time to navigate if they're switching views
1146
1154
  setTimeout(() => {
1147
- toast(toastMessage, {
1155
+ const showBatchToast = errorJobs > 0 ? toast : toast.success;
1156
+ showBatchToast(toastMessage, {
1148
1157
  duration: 5000, // Show for 5 seconds
1149
1158
  id: `batch-${batchId}`, // Unique ID to prevent duplicates
1150
1159
  });
@@ -1250,20 +1259,36 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1250
1259
  }
1251
1260
  }, [currentWorkspace]);
1252
1261
  const sendClientInfoImmediate = useCallback(async () => {
1262
+ const itemAtSend = currentItemRef.current;
1253
1263
  const clientInfoMessage = {
1254
1264
  type: "client-info",
1255
1265
  sessionId: sessionId,
1256
1266
  url: window.location.href,
1257
1267
  userAgent: navigator.userAgent,
1258
- item: currentItemRef.current
1268
+ item: itemAtSend
1259
1269
  ? {
1260
- ...currentItemRef.current.descriptor,
1261
- name: currentItemRef.current.name,
1270
+ ...itemAtSend.descriptor,
1271
+ name: itemAtSend.name,
1262
1272
  }
1263
1273
  : null,
1264
1274
  };
1265
1275
  const url = "/parhelia/client";
1266
- await post(url, clientInfoMessage);
1276
+ const result = await post(url, clientInfoMessage);
1277
+ if (result.type !== "success" ||
1278
+ !itemAtSend ||
1279
+ !getEditorRealtime().isOpen()) {
1280
+ return;
1281
+ }
1282
+ // /parhelia/client returns success only after ApplyClientInfo has
1283
+ // synchronously registered the page topic. Treat that response as the
1284
+ // authoritative acknowledgement instead of depending solely on the
1285
+ // active-sessions broadcast making a round trip back to this tab.
1286
+ const currentItem = currentItemRef.current;
1287
+ if (currentItem?.descriptor.id === itemAtSend.descriptor.id &&
1288
+ currentItem.descriptor.language === itemAtSend.descriptor.language &&
1289
+ currentItem.descriptor.version === itemAtSend.descriptor.version) {
1290
+ setIsClientInfoAcknowledged(true);
1291
+ }
1267
1292
  }, [sessionId]);
1268
1293
  const debouncedSendClientInfo = useDebouncedCallback(() => {
1269
1294
  void sendClientInfoImmediate();
@@ -1602,6 +1627,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1602
1627
  const keepAliveUrl = "/parhelia/keepalive";
1603
1628
  const runSessionCheck = () => {
1604
1629
  fetch(keepAliveUrl + "?ts=" + Date.now(), {
1630
+ method: "POST",
1605
1631
  credentials: "include",
1606
1632
  headers: { "Cache-Control": "no-cache" },
1607
1633
  })
@@ -1948,10 +1974,18 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1948
1974
  setRemovingComponentIds([]);
1949
1975
  }, [currentItemDescriptor, activePageViewContext.page?.item.id]);
1950
1976
  useEffect(() => {
1951
- // When the item changes, reset acknowledgment and re-send client info
1977
+ // When the item changes, reset acknowledgment. Registration below sends
1978
+ // immediately and keeps retrying until active-sessions confirms it.
1952
1979
  setIsClientInfoAcknowledged(false);
1953
- sendClientInfo();
1954
1980
  }, [currentItemDescriptor]);
1981
+ useClientInfoRegistration({
1982
+ itemKey: currentItemDescriptor
1983
+ ? `${currentItemDescriptor.id}:${currentItemDescriptor.language}:${currentItemDescriptor.version}`
1984
+ : null,
1985
+ acknowledged: isClientInfoAcknowledged,
1986
+ connectionVersion: socketConnectionVersion,
1987
+ sendClientInfo: sendClientInfoImmediate,
1988
+ });
1955
1989
  // Detect acknowledgment via presence of our session with matching item in active-sessions
1956
1990
  useEffect(() => {
1957
1991
  if (!currentItemDescriptor)
@@ -2486,6 +2520,16 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2486
2520
  setRevision(newRevision);
2487
2521
  globalThis.editorRefreshTimer = undefined;
2488
2522
  };
2523
+ if (mode === "hard") {
2524
+ // A pending soft refresh would land the same revision through the
2525
+ // incremental path the caller is trying to bypass.
2526
+ if (refreshTimer) {
2527
+ clearTimeout(refreshTimer);
2528
+ }
2529
+ setFullReloadToken((token) => token + 1);
2530
+ doRefresh();
2531
+ return;
2532
+ }
2489
2533
  if (mode === "immediate") {
2490
2534
  if (refreshTimer) {
2491
2535
  clearTimeout(refreshTimer);
@@ -2507,9 +2551,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2507
2551
  return;
2508
2552
  // The previous item's comments don't speak for the new one.
2509
2553
  setCommentsLoaded(false);
2554
+ // Loading feedback before client-info is acknowledged creates a gap: an
2555
+ // update can arrive after this REST response but before the realtime page
2556
+ // subscription exists. Once acknowledged, the snapshot and event stream
2557
+ // form one continuous view of the server state.
2558
+ if (!isClientInfoAcknowledged)
2559
+ return;
2510
2560
  loadComments();
2511
2561
  loadSuggestedEdits();
2512
- }, [currentItemDescriptor]);
2562
+ }, [currentItemDescriptor, isClientInfoAcknowledged]);
2513
2563
  // Track the previous history mode to detect mode changes
2514
2564
  const prevHistoryModeRef = useRef(historyMode);
2515
2565
  const historyInitialLoadDoneRef = useRef(false);
@@ -2619,6 +2669,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2619
2669
  f.type === "multi-line text" ||
2620
2670
  f.type === "rich text"));
2621
2671
  if (field) {
2672
+ // Programmatic focus: no user intent to see the field, and after a
2673
+ // move it still measures at its pre-move rect (the drag origin)
2674
+ // until the canvas refresh lands.
2675
+ suppressNextFocusedFieldAutoScrollRef.current = true;
2622
2676
  setFocusedField(field.descriptor);
2623
2677
  setFocusFieldComponentId(undefined);
2624
2678
  }
@@ -2915,7 +2969,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2915
2969
  }
2916
2970
  // IMPORTANT: Only update global "current item" state when the affected slot is active.
2917
2971
  // Otherwise we'd change URL/tree/controls while loading into an inactive slot.
2918
- if (isExistingSlotActive) {
2972
+ if (isExistingSlotActive &&
2973
+ existingSlotForItem.slotId === activeSlotIdRef.current) {
2919
2974
  setItem(loadedItem);
2920
2975
  setSelection([]);
2921
2976
  currentItemDescriptorRef.current = itemToLoad;
@@ -2984,6 +3039,14 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2984
3039
  // slot the caller explicitly opened, do update.
2985
3040
  const isFirstSlot = editorSlots.length === 0;
2986
3041
  const isExplicitNewSlot = options?.openInNewSlot === true && !options?.targetSlotId;
3042
+ // Focus follows a new-slot action immediately. Waiting for getItem() made
3043
+ // an older, slow navigation able to reclaim focus after the user clicked
3044
+ // another slot. Any subsequent activation now wins because the async
3045
+ // completion below only updates global state while its target is active.
3046
+ if (isFirstSlot || isExplicitNewSlot) {
3047
+ activeSlotIdRef.current = targetSlotId;
3048
+ setActiveSlotId(targetSlotId);
3049
+ }
2987
3050
  const shouldUpdateGlobalCurrentItem = isFirstSlot ||
2988
3051
  isExplicitNewSlot ||
2989
3052
  targetSlotId === activeSlotIdRef.current;
@@ -2995,17 +3058,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2995
3058
  return undefined;
2996
3059
  }
2997
3060
  if (shouldUpdateGlobalCurrentItem &&
2998
- latestGlobalLoadKeyRef.current !== requestedItemKey) {
3061
+ (targetSlotId !== activeSlotIdRef.current ||
3062
+ latestGlobalLoadKeyRef.current !== requestedItemKey)) {
2999
3063
  return loadedItem;
3000
3064
  }
3001
- // Activate the new slot when this is either the initial first slot, or the
3002
- // caller explicitly opened the item in a new slot — focus follows the action so
3003
- // the user immediately sees what they just opened. Beyond that, slot focus is
3004
- // driven by mouse hover/click.
3005
- if (isFirstSlot || isExplicitNewSlot) {
3006
- activeSlotIdRef.current = targetSlotId;
3007
- setActiveSlotId(targetSlotId);
3008
- }
3009
3065
  if (shouldUpdateGlobalCurrentItem) {
3010
3066
  setItem(loadedItem);
3011
3067
  setSelection([]);
@@ -3035,7 +3091,11 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3035
3091
  ensureFieldModificationStoreRegistered,
3036
3092
  ]);
3037
3093
  const setActiveSlot = useCallback(async (slotId) => {
3038
- if (activeSlotId === slotId)
3094
+ // Commands resolve their target through activeSlotIdRef so activation
3095
+ // must use that same source of truth. React state can briefly lag behind
3096
+ // the ref during rapid slot changes; comparing the stale render value
3097
+ // could leave one slot highlighted while toolbar commands target another.
3098
+ if (activeSlotIdRef.current === slotId)
3039
3099
  return;
3040
3100
  const slot = editorSlots.find((s) => s.slotId === slotId);
3041
3101
  if (!slot)
@@ -3062,7 +3122,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3062
3122
  targetSlotId: slotId,
3063
3123
  });
3064
3124
  }
3065
- }, [activeSlotId, editorSlots, loadItem]);
3125
+ }, [editorSlots, loadItem]);
3066
3126
  const closeEditorSlot = useCallback((slotId) => {
3067
3127
  const currentActiveSlotId = activeSlotId;
3068
3128
  const isClosingActiveSlot = currentActiveSlotId === slotId;
@@ -3391,6 +3451,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3391
3451
  sessionId,
3392
3452
  onMessage: messageHandler,
3393
3453
  onOpen: async () => {
3454
+ // The transport is open, but it is not subscribed to this page until the
3455
+ // server acknowledges the client-info message sent immediately after
3456
+ // this callback.
3457
+ setIsClientInfoAcknowledged(false);
3394
3458
  // Clear concurrent user limit error on successful connection
3395
3459
  setConcurrentUserLimitError(null);
3396
3460
  // Startup WebSocket probe may have failed with a blocking error while seats were full.
@@ -4127,18 +4191,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4127
4191
  }, [operationsContext.cleanup]);
4128
4192
  // Shared focused field setter with lock handling (used in both contexts)
4129
4193
  const setFocusedFieldWithLock = useCallback(async (field, requestLock) => {
4130
- logFieldValueDiagnostic("focused-field", "setFocusedField requested", {
4131
- field: summarizeFieldDescriptor(field),
4132
- requestLock,
4133
- ignoreBlur,
4134
- currentFocusedField: summarizeFieldDescriptor(focusedFieldRef.current),
4135
- lockedField: summarizeFieldDescriptor(lockedField),
4136
- });
4137
4194
  if (field) {
4138
4195
  setIgnoreBlur(true);
4139
4196
  setTimeout(() => {
4140
4197
  setIgnoreBlur(false);
4141
4198
  }, 20);
4199
+ // Selection follows the user's click independently of the asynchronous
4200
+ // edit lock. Lock ownership controls whether editing may proceed, but a
4201
+ // slow or rejected lock must not leave the form on the previous field.
4202
+ setFocusedField({ ...field });
4142
4203
  if (requestLock) {
4143
4204
  const lockResult = (await operations.ensureLock(field)) || false;
4144
4205
  if (!lockResult) {
@@ -4148,19 +4209,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4148
4209
  });
4149
4210
  return false;
4150
4211
  }
4151
- setFocusedField({ ...field });
4152
- logFieldValueDiagnostic("focused-field", "focused field set", {
4153
- field: summarizeFieldDescriptor(field),
4154
- requestLock,
4155
- lockResult,
4156
- });
4157
- return true;
4158
4212
  }
4159
- setFocusedField({ ...field });
4160
- logFieldValueDiagnostic("focused-field", "focused field set", {
4161
- field: summarizeFieldDescriptor(field),
4162
- requestLock,
4163
- });
4164
4213
  }
4165
4214
  else {
4166
4215
  // Keep the field selected when the blur was caused by clicking a User
@@ -4183,27 +4232,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4183
4232
  now: Date.now(),
4184
4233
  });
4185
4234
  if (!ignoreBlur && !focusMovedToShowMe && !focusMovedToAgentTerminal) {
4186
- logFieldValueDiagnostic("focused-field", "clearing focused field", {
4187
- previousFocusedField: summarizeFieldDescriptor(focusedFieldRef.current),
4188
- lockedField: summarizeFieldDescriptor(lockedField),
4189
- sessionId,
4190
- });
4191
4235
  setFocusedField(undefined);
4192
4236
  setLockedField(undefined); // Clear client-side lock state
4193
4237
  releaseFieldLocks(sessionId);
4194
4238
  }
4195
- else {
4196
- logFieldValueDiagnostic("focused-field", "clear skipped", {
4197
- reason: ignoreBlur
4198
- ? "ignoreBlur"
4199
- : focusMovedToShowMe
4200
- ? "manual show-me focus transfer"
4201
- : "agent terminal focus transfer",
4202
- previousFocusedField: summarizeFieldDescriptor(focusedFieldRef.current),
4203
- focusMovedToShowMe,
4204
- focusMovedToAgentTerminal,
4205
- });
4206
- }
4207
4239
  }
4208
4240
  return true;
4209
4241
  }, [operations, ignoreBlur, sessionId, lockedField]);
@@ -4721,6 +4753,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4721
4753
  },
4722
4754
  selectWithoutAutoScroll,
4723
4755
  consumeNextSelectionAutoScrollSuppression,
4756
+ consumeNextFocusedFieldAutoScrollSuppression,
4724
4757
  contentTreeSelection,
4725
4758
  setContentTreeSelection,
4726
4759
  selectedForInsertion,
@@ -5160,6 +5193,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5160
5193
  closeEditorSlot,
5161
5194
  setActiveSlot,
5162
5195
  revision,
5196
+ fullReloadToken,
5163
5197
  notifyPageModelReady,
5164
5198
  pageModelReadyToken,
5165
5199
  selectedComment,
@@ -5447,6 +5481,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
5447
5481
  removingComponentIds,
5448
5482
  currentItemDescriptor,
5449
5483
  revision,
5484
+ fullReloadToken,
5450
5485
  notifyPageModelReady,
5451
5486
  pageModelReadyToken,
5452
5487
  selectedComment,