@parhelia/core 0.1.12895 → 0.1.12901

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 (552) hide show
  1. package/dist/agents-view/AgentCard.js +1 -1
  2. package/dist/agents-view/AgentCard.js.map +1 -1
  3. package/dist/agents-view/AgentProfileIcon.d.ts +1 -1
  4. package/dist/agents-view/AgentProfileIcon.js +4 -0
  5. package/dist/agents-view/AgentProfileIcon.js.map +1 -1
  6. package/dist/agents-view/AgentsWorkspaceView.js +10 -24
  7. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  8. package/dist/agents-view/ProfileAgentsGroup.js +2 -3
  9. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  10. package/dist/components/MarkdownDisplay.js +1 -1
  11. package/dist/components/MarkdownDisplay.js.map +1 -1
  12. package/dist/components/SearchInput.d.ts +1 -0
  13. package/dist/components/SearchInput.js +2 -2
  14. package/dist/components/SearchInput.js.map +1 -1
  15. package/dist/components/ui/LanguageSelectionGrid.js +2 -1
  16. package/dist/components/ui/LanguageSelectionGrid.js.map +1 -1
  17. package/dist/components/ui/LanguageSelector.d.ts +2 -1
  18. package/dist/components/ui/LanguageSelector.js +3 -3
  19. package/dist/components/ui/LanguageSelector.js.map +1 -1
  20. package/dist/components/ui/badge.d.ts +5 -1
  21. package/dist/components/ui/badge.js +8 -3
  22. package/dist/components/ui/badge.js.map +1 -1
  23. package/dist/components/ui/button.js +4 -5
  24. package/dist/components/ui/button.js.map +1 -1
  25. package/dist/components/ui/checkbox.js +1 -1
  26. package/dist/components/ui/checkbox.js.map +1 -1
  27. package/dist/components/ui/command.js +1 -1
  28. package/dist/components/ui/command.js.map +1 -1
  29. package/dist/components/ui/context-menu.d.ts +13 -0
  30. package/dist/components/ui/context-menu.js +61 -57
  31. package/dist/components/ui/context-menu.js.map +1 -1
  32. package/dist/components/ui/dropdown-menu.js +4 -4
  33. package/dist/components/ui/dropdown-menu.js.map +1 -1
  34. package/dist/components/ui/input.js +2 -2
  35. package/dist/components/ui/input.js.map +1 -1
  36. package/dist/components/ui/switch.js +1 -1
  37. package/dist/components/ui/switch.js.map +1 -1
  38. package/dist/components/ui/textarea.js +1 -1
  39. package/dist/components/ui/textarea.js.map +1 -1
  40. package/dist/config/config.js +40 -15
  41. package/dist/config/config.js.map +1 -1
  42. package/dist/config/notificationRoutes.js +2 -2
  43. package/dist/config/notificationRoutes.js.map +1 -1
  44. package/dist/editor/ContentTree.js +13 -5
  45. package/dist/editor/ContentTree.js.map +1 -1
  46. package/dist/editor/ContextMenu.js +4 -6
  47. package/dist/editor/ContextMenu.js.map +1 -1
  48. package/dist/editor/FieldListField.js +14 -7
  49. package/dist/editor/FieldListField.js.map +1 -1
  50. package/dist/editor/GlobalMenuBar.js +1 -2
  51. package/dist/editor/GlobalMenuBar.js.map +1 -1
  52. package/dist/editor/ImageEditor.js +1 -1
  53. package/dist/editor/ImageEditor.js.map +1 -1
  54. package/dist/editor/LinkEditorDialog.js +13 -0
  55. package/dist/editor/LinkEditorDialog.js.map +1 -1
  56. package/dist/editor/MainLayout.js +66 -9
  57. package/dist/editor/MainLayout.js.map +1 -1
  58. package/dist/editor/Titlebar.js +1 -1
  59. package/dist/editor/Titlebar.js.map +1 -1
  60. package/dist/editor/WorkspaceTitleSwitcher.js +12 -31
  61. package/dist/editor/WorkspaceTitleSwitcher.js.map +1 -1
  62. package/dist/editor/ai/AgentProfileSelector.js +2 -2
  63. package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
  64. package/dist/editor/ai/AgentStatusBadge.js +3 -11
  65. package/dist/editor/ai/AgentStatusBadge.js.map +1 -1
  66. package/dist/editor/ai/Agents.js +46 -41
  67. package/dist/editor/ai/Agents.js.map +1 -1
  68. package/dist/editor/ai/InlineAiDialog.js +24 -26
  69. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  70. package/dist/editor/ai/InlineAiTrigger.js +30 -1
  71. package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
  72. package/dist/editor/ai/agentActivitySummary.d.ts +108 -0
  73. package/dist/editor/ai/agentActivitySummary.js +390 -0
  74. package/dist/editor/ai/agentActivitySummary.js.map +1 -0
  75. package/dist/editor/ai/terminal/agentContextMerge.d.ts +19 -0
  76. package/dist/editor/ai/terminal/agentContextMerge.js +88 -0
  77. package/dist/editor/ai/terminal/agentContextMerge.js.map +1 -0
  78. package/dist/editor/ai/terminal/components/ActivitySummaryCell.d.ts +21 -0
  79. package/dist/editor/ai/terminal/components/ActivitySummaryCell.js +133 -0
  80. package/dist/editor/ai/terminal/components/ActivitySummaryCell.js.map +1 -0
  81. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.d.ts +7 -0
  82. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js +145 -0
  83. package/dist/editor/ai/terminal/components/AgentActivityOverviewPanel.js.map +1 -0
  84. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js +1 -1
  85. package/dist/editor/ai/terminal/components/AgentEditHistoryButton.js.map +1 -1
  86. package/dist/editor/ai/terminal/components/AgentFullPromptControls.d.ts +2 -1
  87. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +13 -13
  88. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js.map +1 -1
  89. package/dist/editor/ai/terminal/components/AgentGreeting.js +2 -2
  90. package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
  91. package/dist/editor/ai/terminal/components/AgentMobileStatusPopover.js +1 -1
  92. package/dist/editor/ai/terminal/components/AgentMobileStatusPopover.js.map +1 -1
  93. package/dist/editor/ai/terminal/components/AgentModeSelector.d.ts +1 -1
  94. package/dist/editor/ai/terminal/components/AgentModeSelector.js +86 -9
  95. package/dist/editor/ai/terminal/components/AgentModeSelector.js.map +1 -1
  96. package/dist/editor/ai/terminal/components/AgentPredefinedPromptsButton.js +1 -1
  97. package/dist/editor/ai/terminal/components/AgentPredefinedPromptsButton.js.map +1 -1
  98. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +2 -2
  99. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
  100. package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +2 -2
  101. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +4 -27
  102. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
  103. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.d.ts +2 -2
  104. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js +15 -12
  105. package/dist/editor/ai/terminal/components/AgentPromptTrayPopovers.js.map +1 -1
  106. package/dist/editor/ai/terminal/components/AgentSettingsPopover.js +1 -1
  107. package/dist/editor/ai/terminal/components/AgentSettingsPopover.js.map +1 -1
  108. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.d.ts +2 -0
  109. package/dist/editor/ai/terminal/components/AgentSummaryAssistantResponse.js.map +1 -1
  110. package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.d.ts +1 -3
  111. package/dist/editor/ai/terminal/components/AgentTerminalContextChrome.js.map +1 -1
  112. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +10 -10
  113. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +17 -3
  114. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  115. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +2 -1
  116. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +59 -5
  117. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  118. package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +3 -2
  119. package/dist/editor/ai/terminal/components/AgentTerminalView.js +5 -4
  120. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  121. package/dist/editor/ai/terminal/components/AiResponseMessage.d.ts +2 -0
  122. package/dist/editor/ai/terminal/components/AiResponseMessage.js +84 -28
  123. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  124. package/dist/editor/ai/terminal/components/ContextInfoBar.d.ts +2 -4
  125. package/dist/editor/ai/terminal/components/ContextInfoBar.js +93 -223
  126. package/dist/editor/ai/terminal/components/ContextInfoBar.js.map +1 -1
  127. package/dist/editor/ai/terminal/useAgentDraftInitializer.js +7 -45
  128. package/dist/editor/ai/terminal/useAgentDraftInitializer.js.map +1 -1
  129. package/dist/editor/ai/terminal/useAgentEditorContextPipeline.d.ts +0 -4
  130. package/dist/editor/ai/terminal/useAgentEditorContextPipeline.js +1 -7
  131. package/dist/editor/ai/terminal/useAgentEditorContextPipeline.js.map +1 -1
  132. package/dist/editor/ai/terminal/useAgentPromptComposerSurface.d.ts +2 -2
  133. package/dist/editor/ai/terminal/useAgentQuickActions.d.ts +2 -2
  134. package/dist/editor/ai/terminal/useAgentQuickActions.js +61 -3
  135. package/dist/editor/ai/terminal/useAgentQuickActions.js.map +1 -1
  136. package/dist/editor/ai/terminal/useAgentSettingsPanel.js +0 -2
  137. package/dist/editor/ai/terminal/useAgentSettingsPanel.js.map +1 -1
  138. package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js +3 -3
  139. package/dist/editor/ai/terminal/useAgentSettingsSelectOptions.js.map +1 -1
  140. package/dist/editor/ai/terminal/useAgentSkillActions.d.ts +0 -3
  141. package/dist/editor/ai/terminal/useAgentSkillActions.js +8 -26
  142. package/dist/editor/ai/terminal/useAgentSkillActions.js.map +1 -1
  143. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.d.ts +1 -5
  144. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js +6 -19
  145. package/dist/editor/ai/terminal/useAgentSubmitContextBuilder.js.map +1 -1
  146. package/dist/editor/ai/terminal/useAgentTerminalChrome.d.ts +1 -3
  147. package/dist/editor/ai/terminal/useAgentTerminalChrome.js +2 -2
  148. package/dist/editor/ai/terminal/useAgentTerminalChrome.js.map +1 -1
  149. package/dist/editor/ai/terminal/useAgentTerminalController.js +18 -22
  150. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  151. package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -1
  152. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js +2 -2
  153. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
  154. package/dist/editor/ai/terminal/useAgentTerminalViewState.d.ts +0 -6
  155. package/dist/editor/ai/terminal/useAgentTerminalViewState.js +2 -16
  156. package/dist/editor/ai/terminal/useAgentTerminalViewState.js.map +1 -1
  157. package/dist/editor/ai/useActiveAgentConversation.d.ts +2 -0
  158. package/dist/editor/ai/useActiveAgentConversation.js +20 -0
  159. package/dist/editor/ai/useActiveAgentConversation.js.map +1 -1
  160. package/dist/editor/bridge/protocol.d.ts +48 -0
  161. package/dist/editor/bridge/protocol.js +13 -1
  162. package/dist/editor/bridge/protocol.js.map +1 -1
  163. package/dist/editor/client/EditorShell.d.ts +2 -0
  164. package/dist/editor/client/EditorShell.js +129 -29
  165. package/dist/editor/client/EditorShell.js.map +1 -1
  166. package/dist/editor/client/editContext.d.ts +30 -4
  167. package/dist/editor/client/editContext.js.map +1 -1
  168. package/dist/editor/client/hooks/useReducedMotion.d.ts +8 -0
  169. package/dist/editor/client/hooks/useReducedMotion.js +12 -0
  170. package/dist/editor/client/hooks/useReducedMotion.js.map +1 -0
  171. package/dist/editor/client/manualShowMeFocus.d.ts +17 -0
  172. package/dist/editor/client/manualShowMeFocus.js +32 -0
  173. package/dist/editor/client/manualShowMeFocus.js.map +1 -0
  174. package/dist/editor/client/ui/FullscreenControls.js +5 -5
  175. package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
  176. package/dist/editor/commands/componentCommands.js +30 -1
  177. package/dist/editor/commands/componentCommands.js.map +1 -1
  178. package/dist/editor/commands/keyboardCommands.d.ts +6 -0
  179. package/dist/editor/commands/keyboardCommands.js +74 -0
  180. package/dist/editor/commands/keyboardCommands.js.map +1 -1
  181. package/dist/editor/commands/reorderComponent.d.ts +20 -0
  182. package/dist/editor/commands/reorderComponent.js +40 -0
  183. package/dist/editor/commands/reorderComponent.js.map +1 -0
  184. package/dist/editor/commands/undo.js +3 -3
  185. package/dist/editor/commands/undo.js.map +1 -1
  186. package/dist/editor/componentFrameColors.d.ts +11 -0
  187. package/dist/editor/componentFrameColors.js +47 -0
  188. package/dist/editor/componentFrameColors.js.map +1 -0
  189. package/dist/editor/field-types/RichTextEditor.js +25 -6
  190. package/dist/editor/field-types/RichTextEditor.js.map +1 -1
  191. package/dist/editor/field-types/RichTextEditorComponent.js +14 -1
  192. package/dist/editor/field-types/RichTextEditorComponent.js.map +1 -1
  193. package/dist/editor/field-types/richtext/hooks/useRichTextProfile.d.ts +4 -1
  194. package/dist/editor/field-types/richtext/hooks/useRichTextProfile.js +33 -5
  195. package/dist/editor/field-types/richtext/hooks/useRichTextProfile.js.map +1 -1
  196. package/dist/editor/insertMenuItems.d.ts +11 -0
  197. package/dist/editor/insertMenuItems.js +9 -0
  198. package/dist/editor/insertMenuItems.js.map +1 -1
  199. package/dist/editor/menubar/ActiveUsers.js +3 -3
  200. package/dist/editor/menubar/ActiveUsers.js.map +1 -1
  201. package/dist/editor/menubar/FavoritesControls.js +46 -27
  202. package/dist/editor/menubar/FavoritesControls.js.map +1 -1
  203. package/dist/editor/menubar/GenericToolbar.js +2 -1
  204. package/dist/editor/menubar/GenericToolbar.js.map +1 -1
  205. package/dist/editor/menubar/ItemLanguageVersion.js +7 -5
  206. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  207. package/dist/editor/menubar/PageSelector.js +1 -1
  208. package/dist/editor/menubar/PageSelector.js.map +1 -1
  209. package/dist/editor/menubar/PreviewDatePicker.js +40 -21
  210. package/dist/editor/menubar/PreviewDatePicker.js.map +1 -1
  211. package/dist/editor/menubar/Separator.d.ts +2 -1
  212. package/dist/editor/menubar/Separator.js +2 -2
  213. package/dist/editor/menubar/Separator.js.map +1 -1
  214. package/dist/editor/menubar/ToolbarFactory.js +24 -17
  215. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  216. package/dist/editor/menubar/VersionSelector.d.ts +2 -1
  217. package/dist/editor/menubar/VersionSelector.js +3 -3
  218. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  219. package/dist/editor/menubar/WorkflowButton.js +17 -25
  220. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  221. package/dist/editor/menubar/toolbar-sections/ContentTreeToggle.d.ts +1 -0
  222. package/dist/editor/menubar/toolbar-sections/ContentTreeToggle.js +13 -0
  223. package/dist/editor/menubar/toolbar-sections/ContentTreeToggle.js.map +1 -0
  224. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js +1 -1
  225. package/dist/editor/menubar/toolbar-sections/CustomCommandsToolbar.js.map +1 -1
  226. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +104 -9
  227. package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
  228. package/dist/editor/menubar/toolbar-sections/EditControls.d.ts +4 -2
  229. package/dist/editor/menubar/toolbar-sections/EditControls.js +78 -11
  230. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  231. package/dist/editor/menubar/toolbar-sections/FullscreenControl.d.ts +1 -0
  232. package/dist/editor/menubar/toolbar-sections/FullscreenControl.js +15 -0
  233. package/dist/editor/menubar/toolbar-sections/FullscreenControl.js.map +1 -0
  234. package/dist/editor/menubar/toolbar-sections/InsertControls.js +1 -1
  235. package/dist/editor/menubar/toolbar-sections/InsertControls.js.map +1 -1
  236. package/dist/editor/menubar/toolbar-sections/ManualBrowser.d.ts +12 -0
  237. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +169 -26
  238. package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
  239. package/dist/editor/menubar/toolbar-sections/ReviewCommands.js +2 -1
  240. package/dist/editor/menubar/toolbar-sections/ReviewCommands.js.map +1 -1
  241. package/dist/editor/menubar/toolbar-sections/UtilityControls.d.ts +3 -1
  242. package/dist/editor/menubar/toolbar-sections/UtilityControls.js +11 -3
  243. package/dist/editor/menubar/toolbar-sections/UtilityControls.js.map +1 -1
  244. package/dist/editor/menubar/toolbar-sections/ViewportControls.d.ts +1 -0
  245. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +48 -29
  246. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  247. package/dist/editor/menubar/toolbar-sections/index.d.ts +2 -1
  248. package/dist/editor/menubar/toolbar-sections/index.js +2 -1
  249. package/dist/editor/menubar/toolbar-sections/index.js.map +1 -1
  250. package/dist/editor/notifications/NotificationCenter.d.ts +4 -1
  251. package/dist/editor/notifications/NotificationCenter.js +13 -4
  252. package/dist/editor/notifications/NotificationCenter.js.map +1 -1
  253. package/dist/editor/notifications/WatchButton.d.ts +4 -2
  254. package/dist/editor/notifications/WatchButton.js +78 -20
  255. package/dist/editor/notifications/WatchButton.js.map +1 -1
  256. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +71 -6
  257. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  258. package/dist/editor/page-editor-chrome/CommentHighlightings.js +36 -40
  259. package/dist/editor/page-editor-chrome/CommentHighlightings.js.map +1 -1
  260. package/dist/editor/page-editor-chrome/DragInsertionOverlay.d.ts +36 -0
  261. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js +879 -0
  262. package/dist/editor/page-editor-chrome/DragInsertionOverlay.js.map +1 -0
  263. package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.d.ts +1 -0
  264. package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js +3 -3
  265. package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js.map +1 -1
  266. package/dist/editor/page-editor-chrome/FrameMenu.d.ts +3 -2
  267. package/dist/editor/page-editor-chrome/FrameMenu.js +49 -119
  268. package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
  269. package/dist/editor/page-editor-chrome/FrameMenus.d.ts +1 -1
  270. package/dist/editor/page-editor-chrome/FrameMenus.js +65 -15
  271. package/dist/editor/page-editor-chrome/FrameMenus.js.map +1 -1
  272. package/dist/editor/page-editor-chrome/InsertComponentMenu.d.ts +25 -0
  273. package/dist/editor/page-editor-chrome/InsertComponentMenu.js +30 -0
  274. package/dist/editor/page-editor-chrome/InsertComponentMenu.js.map +1 -0
  275. package/dist/editor/page-editor-chrome/PageEditorChrome.js +14 -2
  276. package/dist/editor/page-editor-chrome/PageEditorChrome.js.map +1 -1
  277. package/dist/editor/page-editor-chrome/PlaceholderDropZone.d.ts +33 -2
  278. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +94 -71
  279. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  280. package/dist/editor/page-editor-chrome/PlaceholderDropZones.d.ts +13 -2
  281. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js +105 -203
  282. package/dist/editor/page-editor-chrome/PlaceholderDropZones.js.map +1 -1
  283. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js +51 -88
  284. package/dist/editor/page-editor-chrome/SuggestionHighlightings.js.map +1 -1
  285. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.js +2 -1
  286. package/dist/editor/page-editor-chrome/bridgeInlineFormatToolbarLayout.js.map +1 -1
  287. package/dist/editor/page-editor-chrome/componentDragObject.d.ts +10 -0
  288. package/dist/editor/page-editor-chrome/componentDragObject.js +22 -0
  289. package/dist/editor/page-editor-chrome/componentDragObject.js.map +1 -0
  290. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.d.ts +32 -0
  291. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +8 -0
  292. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  293. package/dist/editor/page-editor-chrome/overlay/InsertionLine.d.ts +44 -0
  294. package/dist/editor/page-editor-chrome/overlay/InsertionLine.js +160 -0
  295. package/dist/editor/page-editor-chrome/overlay/InsertionLine.js.map +1 -0
  296. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +39 -0
  297. package/dist/editor/page-editor-chrome/overlay/geometry.js +67 -10
  298. package/dist/editor/page-editor-chrome/overlay/geometry.js.map +1 -1
  299. package/dist/editor/page-editor-chrome/overlay/placeholderZones.d.ts +66 -0
  300. package/dist/editor/page-editor-chrome/overlay/placeholderZones.js +274 -0
  301. package/dist/editor/page-editor-chrome/overlay/placeholderZones.js.map +1 -0
  302. package/dist/editor/page-editor-chrome/useComponentDragHandle.d.ts +23 -0
  303. package/dist/editor/page-editor-chrome/useComponentDragHandle.js +41 -0
  304. package/dist/editor/page-editor-chrome/useComponentDragHandle.js.map +1 -0
  305. package/dist/editor/page-editor-chrome/useDragInsertionGesture.d.ts +23 -0
  306. package/dist/editor/page-editor-chrome/useDragInsertionGesture.js +207 -0
  307. package/dist/editor/page-editor-chrome/useDragInsertionGesture.js.map +1 -0
  308. package/dist/editor/page-editor-chrome/usePinnedHoveredComponentId.d.ts +2 -0
  309. package/dist/editor/page-editor-chrome/usePinnedHoveredComponentId.js +18 -0
  310. package/dist/editor/page-editor-chrome/usePinnedHoveredComponentId.js.map +1 -0
  311. package/dist/editor/page-viewer/EditorForm.js +14 -12
  312. package/dist/editor/page-viewer/EditorForm.js.map +1 -1
  313. package/dist/editor/page-viewer/EditorFormHintPopover.d.ts +2 -2
  314. package/dist/editor/page-viewer/EditorFormHintPopover.js +4 -4
  315. package/dist/editor/page-viewer/EditorFormHintPopover.js.map +1 -1
  316. package/dist/editor/page-viewer/MiniMap.d.ts +6 -0
  317. package/dist/editor/page-viewer/MiniMap.js +97 -12
  318. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  319. package/dist/editor/page-viewer/MinimapDropTargets.d.ts +13 -0
  320. package/dist/editor/page-viewer/MinimapDropTargets.js +140 -0
  321. package/dist/editor/page-viewer/MinimapDropTargets.js.map +1 -0
  322. package/dist/editor/page-viewer/PageViewer.js +96 -10
  323. package/dist/editor/page-viewer/PageViewer.js.map +1 -1
  324. package/dist/editor/page-viewer/PageViewerFrame.js +263 -6
  325. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  326. package/dist/editor/page-viewer/pageViewContext.d.ts +4 -1
  327. package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
  328. package/dist/editor/reviews/Comment.js +2 -0
  329. package/dist/editor/reviews/Comment.js.map +1 -1
  330. package/dist/editor/reviews/CommentDisplayPopover.js +5 -2
  331. package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
  332. package/dist/editor/reviews/CommentPopover.d.ts +4 -0
  333. package/dist/editor/reviews/CommentPopover.js +15 -1
  334. package/dist/editor/reviews/CommentPopover.js.map +1 -1
  335. package/dist/editor/reviews/Comments.js +61 -44
  336. package/dist/editor/reviews/Comments.js.map +1 -1
  337. package/dist/editor/reviews/DecisionsMatrix.js +3 -3
  338. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  339. package/dist/editor/reviews/FeedbackModeIntro.d.ts +15 -0
  340. package/dist/editor/reviews/FeedbackModeIntro.js +22 -0
  341. package/dist/editor/reviews/FeedbackModeIntro.js.map +1 -0
  342. package/dist/editor/reviews/LatestFeedback.js +8 -2
  343. package/dist/editor/reviews/LatestFeedback.js.map +1 -1
  344. package/dist/editor/reviews/ReviewersPanel.js +2 -1
  345. package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
  346. package/dist/editor/reviews/SuggestedEdit.js +9 -7
  347. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  348. package/dist/editor/reviews/SuggestionDisplayPopover.js +3 -3
  349. package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
  350. package/dist/editor/reviews/feedbackScrollTarget.d.ts +19 -0
  351. package/dist/editor/reviews/feedbackScrollTarget.js +171 -0
  352. package/dist/editor/reviews/feedbackScrollTarget.js.map +1 -0
  353. package/dist/editor/reviews/feedbackSelection.js +4 -4
  354. package/dist/editor/reviews/feedbackSelection.js.map +1 -1
  355. package/dist/editor/reviews/latestFeedbackData.js +1 -1
  356. package/dist/editor/reviews/openCommentsFeedback.d.ts +35 -0
  357. package/dist/editor/reviews/openCommentsFeedback.js +89 -0
  358. package/dist/editor/reviews/openCommentsFeedback.js.map +1 -0
  359. package/dist/editor/services/agentService.d.ts +5 -0
  360. package/dist/editor/services/agentService.js.map +1 -1
  361. package/dist/editor/services/aiService.d.ts +0 -2
  362. package/dist/editor/services/aiService.js.map +1 -1
  363. package/dist/editor/services/editService.d.ts +1 -0
  364. package/dist/editor/services/editService.js +4 -0
  365. package/dist/editor/services/editService.js.map +1 -1
  366. package/dist/editor/settings/IndexOverview.js +2 -2
  367. package/dist/editor/settings/IndexOverview.js.map +1 -1
  368. package/dist/editor/settings/QuotaInfo.js +2 -2
  369. package/dist/editor/settings/QuotaInfo.js.map +1 -1
  370. package/dist/editor/settings/SettingsBreadcrumb.js +8 -2
  371. package/dist/editor/settings/SettingsBreadcrumb.js.map +1 -1
  372. package/dist/editor/settings/SettingsPanelLayout.js +1 -1
  373. package/dist/editor/settings/SettingsPanelLayout.js.map +1 -1
  374. package/dist/editor/settings/SettingsView.js +7 -9
  375. package/dist/editor/settings/SettingsView.js.map +1 -1
  376. package/dist/editor/settings/StatusSummary.js +7 -17
  377. package/dist/editor/settings/StatusSummary.js.map +1 -1
  378. package/dist/editor/settings/panels/AgentToolsPanel.js +2 -1
  379. package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
  380. package/dist/editor/settings/panels/ClusterInstancesPanel.js +2 -1
  381. package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
  382. package/dist/editor/settings/panels/FieldTypeSerializersPanel.js +2 -1
  383. package/dist/editor/settings/panels/FieldTypeSerializersPanel.js.map +1 -1
  384. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +3 -2
  385. package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -1
  386. package/dist/editor/settings/panels/ItemConfigPanel.js +3 -2
  387. package/dist/editor/settings/panels/ItemConfigPanel.js.map +1 -1
  388. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +2 -1
  389. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -1
  390. package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js +2 -1
  391. package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js.map +1 -1
  392. package/dist/editor/settings/panels/PersistentLogsPanel.js +3 -2
  393. package/dist/editor/settings/panels/PersistentLogsPanel.js.map +1 -1
  394. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +2 -1
  395. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
  396. package/dist/editor/settings/panels/ProjectTemplateSelectorList.js +3 -2
  397. package/dist/editor/settings/panels/ProjectTemplateSelectorList.js.map +1 -1
  398. package/dist/editor/settings/panels/ProjectTemplatesPanel.js +3 -3
  399. package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
  400. package/dist/editor/settings/panels/SearchConfigPanel.js +3 -2
  401. package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
  402. package/dist/editor/settings/panels/StatusPanel.js +3 -2
  403. package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
  404. package/dist/editor/sidebar/ComponentPalette.d.ts +1 -1
  405. package/dist/editor/sidebar/ComponentPalette.js +58 -25
  406. package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
  407. package/dist/editor/sidebar/ComponentTree.js +91 -7
  408. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  409. package/dist/editor/sidebar/ContentTreePanel.d.ts +3 -0
  410. package/dist/editor/sidebar/ContentTreePanel.js +14 -0
  411. package/dist/editor/sidebar/ContentTreePanel.js.map +1 -0
  412. package/dist/editor/sidebar/Favorites.js +2 -2
  413. package/dist/editor/sidebar/Favorites.js.map +1 -1
  414. package/dist/editor/sidebar/NavigationPanelItem.js +2 -1
  415. package/dist/editor/sidebar/NavigationPanelItem.js.map +1 -1
  416. package/dist/editor/sidebar/OperationItem.js +98 -17
  417. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  418. package/dist/editor/sidebar/Workbox.js +14 -133
  419. package/dist/editor/sidebar/Workbox.js.map +1 -1
  420. package/dist/editor/sidebar/WorkspaceButton.js +1 -1
  421. package/dist/editor/sidebar/WorkspaceButton.js.map +1 -1
  422. package/dist/editor/sidebar/WorkspaceRail.js +12 -9
  423. package/dist/editor/sidebar/WorkspaceRail.js.map +1 -1
  424. package/dist/editor/sidebar/contentTreeConstants.d.ts +2 -0
  425. package/dist/editor/sidebar/contentTreeConstants.js +3 -0
  426. package/dist/editor/sidebar/contentTreeConstants.js.map +1 -0
  427. package/dist/editor/tree-indicators/GutterColumns.js +4 -14
  428. package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
  429. package/dist/editor/ui/ItemCollectionEditor.js +3 -2
  430. package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
  431. package/dist/editor/ui/LoadingState.d.ts +11 -0
  432. package/dist/editor/ui/LoadingState.js +27 -0
  433. package/dist/editor/ui/LoadingState.js.map +1 -0
  434. package/dist/editor/ui/PerfectTree.d.ts +22 -1
  435. package/dist/editor/ui/PerfectTree.js +17 -11
  436. package/dist/editor/ui/PerfectTree.js.map +1 -1
  437. package/dist/editor/ui/PublishDialog.d.ts +11 -0
  438. package/dist/editor/ui/PublishDialog.js +101 -0
  439. package/dist/editor/ui/PublishDialog.js.map +1 -0
  440. package/dist/editor/ui/PublishItemDialog.js +2 -1
  441. package/dist/editor/ui/PublishItemDialog.js.map +1 -1
  442. package/dist/editor/ui/PublishRestrictionsDialog.js +3 -2
  443. package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
  444. package/dist/editor/ui/SimpleIconButton.d.ts +6 -0
  445. package/dist/editor/ui/SimpleIconButton.js +13 -4
  446. package/dist/editor/ui/SimpleIconButton.js.map +1 -1
  447. package/dist/editor/ui/SimpleMenu.js +4 -4
  448. package/dist/editor/ui/SimpleMenu.js.map +1 -1
  449. package/dist/editor/ui/SimpleTabs.js +1 -1
  450. package/dist/editor/ui/Spinner.d.ts +14 -1
  451. package/dist/editor/ui/Spinner.js.map +1 -1
  452. package/dist/editor/ui/WorkboxItemsTable.d.ts +15 -0
  453. package/dist/editor/ui/WorkboxItemsTable.js +142 -0
  454. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -0
  455. package/dist/index.d.ts +4 -0
  456. package/dist/index.js +2 -0
  457. package/dist/index.js.map +1 -1
  458. package/dist/lib/pointerDrag.d.ts +20 -0
  459. package/dist/lib/pointerDrag.js +57 -0
  460. package/dist/lib/pointerDrag.js.map +1 -0
  461. package/dist/logging/consolePrefix.d.ts +2 -0
  462. package/dist/logging/consolePrefix.js +49 -0
  463. package/dist/logging/consolePrefix.js.map +1 -0
  464. package/dist/logging/index.d.ts +1 -0
  465. package/dist/logging/index.js +2 -0
  466. package/dist/logging/index.js.map +1 -0
  467. package/dist/logging/install-browser-console.d.ts +1 -0
  468. package/dist/logging/install-browser-console.js +3 -0
  469. package/dist/logging/install-browser-console.js.map +1 -0
  470. package/dist/revision.d.ts +2 -2
  471. package/dist/revision.js +2 -2
  472. package/dist/splash-screen/ModernSplashScreen.js +2 -1
  473. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  474. package/dist/task-board/TaskBoardWorkspace.js +181 -35
  475. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  476. package/dist/task-board/components/CommentsList.js +20 -9
  477. package/dist/task-board/components/CommentsList.js.map +1 -1
  478. package/dist/task-board/components/FinishedProjectCard.d.ts +5 -0
  479. package/dist/task-board/components/FinishedProjectCard.js +8 -0
  480. package/dist/task-board/components/FinishedProjectCard.js.map +1 -0
  481. package/dist/task-board/components/ProjectDashboard.d.ts +10 -1
  482. package/dist/task-board/components/ProjectDashboard.js +90 -6
  483. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  484. package/dist/task-board/components/ProjectListContent.js +2 -1
  485. package/dist/task-board/components/ProjectListContent.js.map +1 -1
  486. package/dist/task-board/components/ProjectOverviewContent.js +2 -1
  487. package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
  488. package/dist/task-board/components/TaskAgentPanel.d.ts +4 -0
  489. package/dist/task-board/components/TaskAgentPanel.js +12 -6
  490. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  491. package/dist/task-board/components/TaskAssigneeBadge.d.ts +16 -0
  492. package/dist/task-board/components/TaskAssigneeBadge.js +21 -0
  493. package/dist/task-board/components/TaskAssigneeBadge.js.map +1 -0
  494. package/dist/task-board/components/TaskAssigneePicker.js +12 -10
  495. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  496. package/dist/task-board/components/TaskAttachmentDropZone.d.ts +11 -0
  497. package/dist/task-board/components/TaskAttachmentDropZone.js +100 -0
  498. package/dist/task-board/components/TaskAttachmentDropZone.js.map +1 -0
  499. package/dist/task-board/components/TaskAttachmentsSection.d.ts +1 -0
  500. package/dist/task-board/components/TaskAttachmentsSection.js +15 -41
  501. package/dist/task-board/components/TaskAttachmentsSection.js.map +1 -1
  502. package/dist/task-board/components/TaskBoardFilterBox.d.ts +4 -0
  503. package/dist/task-board/components/TaskBoardFilterBox.js +7 -0
  504. package/dist/task-board/components/TaskBoardFilterBox.js.map +1 -0
  505. package/dist/task-board/components/TaskBoardProjectListSidebar.js +4 -5
  506. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  507. package/dist/task-board/components/TaskCard.js +26 -15
  508. package/dist/task-board/components/TaskCard.js.map +1 -1
  509. package/dist/task-board/components/TaskDetailPanel.d.ts +1 -0
  510. package/dist/task-board/components/TaskDetailPanel.js +15 -12
  511. package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
  512. package/dist/task-board/components/TaskReviewActions.d.ts +1 -0
  513. package/dist/task-board/components/TaskReviewActions.js +4 -2
  514. package/dist/task-board/components/TaskReviewActions.js.map +1 -1
  515. package/dist/task-board/components/TaskRow.js +6 -12
  516. package/dist/task-board/components/TaskRow.js.map +1 -1
  517. package/dist/task-board/components/TaskboardPersistentLogPanel.js +3 -3
  518. package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -1
  519. package/dist/task-board/components/WizardCommunicationCards.js +1 -1
  520. package/dist/task-board/components/WizardCommunicationCards.js.map +1 -1
  521. package/dist/task-board/components/WizardCommunicationCenter.d.ts +7 -1
  522. package/dist/task-board/components/WizardCommunicationCenter.js +10 -6
  523. package/dist/task-board/components/WizardCommunicationCenter.js.map +1 -1
  524. package/dist/task-board/components/WizardCommunicationShared.js +5 -5
  525. package/dist/task-board/components/WizardCommunicationShared.js.map +1 -1
  526. package/dist/task-board/components/WizardTask.d.ts +5 -1
  527. package/dist/task-board/components/WizardTask.js +14 -30
  528. package/dist/task-board/components/WizardTask.js.map +1 -1
  529. package/dist/task-board/components/WizardTaskDetailsPanel.d.ts +10 -2
  530. package/dist/task-board/components/WizardTaskDetailsPanel.js +56 -11
  531. package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
  532. package/dist/task-board/taskBoardNavStore.d.ts +3 -0
  533. package/dist/task-board/taskBoardNavStore.js +44 -0
  534. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  535. package/dist/task-board/taskPriority.d.ts +4 -0
  536. package/dist/task-board/taskPriority.js +19 -0
  537. package/dist/task-board/taskPriority.js.map +1 -0
  538. package/dist/task-board/views/DependencyGraphView.js +48 -36
  539. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  540. package/dist/task-board/views/KanbanView.js +130 -96
  541. package/dist/task-board/views/KanbanView.js.map +1 -1
  542. package/dist/task-board/views/ListView.js +3 -3
  543. package/dist/task-board/views/ListView.js.map +1 -1
  544. package/dist/task-board/views/WizardView.js +7 -6
  545. package/dist/task-board/views/WizardView.js.map +1 -1
  546. package/dist/tour/default-tour.js +5 -5
  547. package/dist/tour/default-tour.js.map +1 -1
  548. package/package.json +11 -1
  549. package/styles.css +144 -0
  550. package/dist/editor/ai/terminal/useAgentEditorContextSync.d.ts +0 -19
  551. package/dist/editor/ai/terminal/useAgentEditorContextSync.js +0 -142
  552. package/dist/editor/ai/terminal/useAgentEditorContextSync.js.map +0 -1
@@ -355,6 +355,12 @@ export function deriveSelectorState(params) {
355
355
  }
356
356
  return "disabled";
357
357
  }
358
+ export function shouldResetActiveReveal(params) {
359
+ if (!params.hasReveal || !params.isRevealStillOpen) {
360
+ return true;
361
+ }
362
+ return params.hasAvailabilitySelector && !params.isAnchorPresent;
363
+ }
358
364
  // Finishers for every highlight overlay currently on screen. Lets a superseding
359
365
  // reveal wipe the previous reveal's highlight immediately so it does not keep
360
366
  // pulsing over the close/re-open transition (the "uncoordinated animation").
@@ -443,6 +449,19 @@ function showHighlightOverlay(x, y, width, height, duration) {
443
449
  window.setTimeout(finish, duration + 500);
444
450
  });
445
451
  }
452
+ export function hasStatefulRevealSurface(surfaceKeys) {
453
+ return surfaceKeys.some((key) => !key.startsWith("custom:"));
454
+ }
455
+ // Whether a superseding reveal should keep (hand off) the previous reveal's
456
+ // already-open editor-form slider instead of closing and reopening it. The
457
+ // slider is a controlled surface (not dismiss-on-outside), so it can persist
458
+ // across reveals: when the incoming reveal is non-sidebar and the slider is
459
+ // already open, we carry the surface forward to avoid a visible close-reopen
460
+ // flicker. Mirrors the `shouldOpenEditorForm` gate but on the "already open"
461
+ // state (there is only something to carry when it is open).
462
+ export function shouldCarryEditorFormSurface(params) {
463
+ return !params.isSidebarOnly && params.sliderExists && params.isSliderOpen;
464
+ }
446
465
  let activeRevealController = null;
447
466
  let revealControllerSeq = 0;
448
467
  // Serialize Show-me reveal clicks across ALL buttons so overlapping rapid clicks
@@ -516,6 +535,26 @@ function closeVersionSelectorIfOpen() {
516
535
  document.querySelector('[data-testid="version-selector"]');
517
536
  trigger?.click();
518
537
  }
538
+ function isNotificationCenterExpanded() {
539
+ return !!document.querySelector('[data-testid="notification-center-trigger"][aria-expanded="true"]');
540
+ }
541
+ function closeNotificationCenterIfOpen() {
542
+ if (!isElementPresent("@notification-center-list"))
543
+ return;
544
+ const list = document.querySelector('[data-testid="notification-center-list"]');
545
+ if (list) {
546
+ list.dispatchEvent(new KeyboardEvent("keydown", {
547
+ key: "Escape",
548
+ code: "Escape",
549
+ bubbles: true,
550
+ cancelable: true,
551
+ }));
552
+ return;
553
+ }
554
+ const trigger = document.querySelector('[data-testid="notification-center-trigger"][aria-expanded="true"]') ??
555
+ document.querySelector('[data-testid="notification-center-trigger"]');
556
+ trigger?.click();
557
+ }
519
558
  // Resolve once the More-panels popover is fully closed: its list is gone AND
520
559
  // the trigger no longer reports aria-expanded="true". This lets a superseding
521
560
  // More-panels reveal reopen from a truly closed state instead of sampling
@@ -550,6 +589,14 @@ async function waitForVersionSelectorClosed(timeoutMs = 1000) {
550
589
  await waitForDelay(50);
551
590
  }
552
591
  }
592
+ async function waitForNotificationCenterClosed(timeoutMs = 1000) {
593
+ const startedAt = Date.now();
594
+ const isStillOpen = () => isElementPresent("@notification-center-list") ||
595
+ isNotificationCenterExpanded();
596
+ while (Date.now() - startedAt < timeoutMs && isStillOpen()) {
597
+ await waitForDelay(50);
598
+ }
599
+ }
553
600
  function isAgentsPanelOpen() {
554
601
  const trigger = document.querySelector('[data-testid="agents-panel-button"]');
555
602
  return (trigger?.getAttribute("aria-pressed") === "true" ||
@@ -609,11 +656,13 @@ function SelectorButton({ selectorDef, keyProp, }) {
609
656
  revealRef.current = null;
610
657
  setIsActiveReveal(false);
611
658
  }, []);
612
- // Fully tear down this reveal: wipe its highlight, close every owned surface
613
- // (reverse open order so nested surfaces close first) and reset the button.
659
+ // Tear down this reveal: wipe its highlight, reset the button, and close every
660
+ // owned surface (reverse open order so nested surfaces close first) EXCEPT
661
+ // those whose key is in `keepKeys`. Kept (still-open) surfaces are returned so
662
+ // a superseding reveal can adopt them instead of closing+reopening them.
614
663
  // Used for explicit close (2nd click, auto timer), external-close handling,
615
664
  // and being superseded by another reveal.
616
- const runRestore = useCallback(async () => {
665
+ const runRestoreKeeping = useCallback(async (keepKeys = []) => {
617
666
  const reveal = revealRef.current;
618
667
  // Remove the highlight immediately so it does not keep pulsing over the
619
668
  // close/re-open transition while the next reveal builds up.
@@ -624,12 +673,17 @@ function SelectorButton({ selectorDef, keyProp, }) {
624
673
  revealRef.current = null;
625
674
  setIsActiveReveal(false);
626
675
  if (!reveal)
627
- return;
676
+ return [];
677
+ const kept = [];
628
678
  // Close in reverse open order (nested surfaces close first).
629
679
  for (let i = reveal.surfaceOps.length - 1; i >= 0; i -= 1) {
630
680
  const op = reveal.surfaceOps[i];
631
681
  if (!op)
632
682
  continue;
683
+ if (keepKeys.includes(op.key) && op.isOpen()) {
684
+ kept.push(op);
685
+ continue;
686
+ }
633
687
  try {
634
688
  await op.close();
635
689
  }
@@ -637,9 +691,16 @@ function SelectorButton({ selectorDef, keyProp, }) {
637
691
  // ignore individual close failures
638
692
  }
639
693
  }
694
+ // Returned in open order so the adopting reveal can splice them back in.
695
+ return kept.reverse();
640
696
  }, []);
697
+ const runRestore = useCallback(async () => {
698
+ await runRestoreKeeping([]);
699
+ }, [runRestoreKeeping]);
641
700
  const runRestoreRef = useRef(runRestore);
642
701
  runRestoreRef.current = runRestore;
702
+ const runRestoreKeepingRef = useRef(runRestoreKeeping);
703
+ runRestoreKeepingRef.current = runRestoreKeeping;
643
704
  // Keep the presence/visibility probes fresh.
644
705
  useEffect(() => {
645
706
  const check = () => {
@@ -688,7 +749,15 @@ function SelectorButton({ selectorDef, keyProp, }) {
688
749
  return;
689
750
  const check = () => {
690
751
  const reveal = revealRef.current;
691
- if (!reveal || !reveal.isStillOpen()) {
752
+ const anchorPresent = anchorSelector
753
+ ? isElementPresent(anchorSelector)
754
+ : isAnchorPresent;
755
+ if (shouldResetActiveReveal({
756
+ hasReveal: Boolean(reveal),
757
+ isRevealStillOpen: reveal?.isStillOpen() ?? false,
758
+ hasAvailabilitySelector,
759
+ isAnchorPresent: anchorPresent,
760
+ })) {
692
761
  resetActiveState();
693
762
  }
694
763
  };
@@ -709,7 +778,13 @@ function SelectorButton({ selectorDef, keyProp, }) {
709
778
  observer.disconnect();
710
779
  clearInterval(intervalId);
711
780
  };
712
- }, [isActiveReveal, resetActiveState]);
781
+ }, [
782
+ anchorSelector,
783
+ hasAvailabilitySelector,
784
+ isActiveReveal,
785
+ isAnchorPresent,
786
+ resetActiveState,
787
+ ]);
713
788
  // Clear the global active controller if this button unmounts while active.
714
789
  useEffect(() => {
715
790
  return () => {
@@ -748,27 +823,45 @@ function SelectorButton({ selectorDef, keyProp, }) {
748
823
  if (clickToken !== revealClickSeq) {
749
824
  return;
750
825
  }
826
+ const resolveElements = (selector = selectorDef.selector) => selector ? getElementsForSelector(selector) : [];
751
827
  // State-machine semantics: any new Show-me action supersedes the
752
- // currently active State 3 reveal from another button, fully
753
- // tearing it down (clearing its highlight and closing its surfaces)
754
- // BEFORE this reveal starts opening. Await the teardown so the close
828
+ // currently active State 3 reveal from another button, tearing it
829
+ // down (clearing its highlight and closing its surfaces) BEFORE
830
+ // this reveal starts opening. Await the teardown so the close
755
831
  // animation completes first - the transition is a clean, sequenced
756
832
  // close-then-open - and so this reveal samples fresh DOM and avoids
757
833
  // a stale "was this surface open?" read. Because clicks are
758
834
  // serialized above, the superseded controller is always the
759
835
  // previous fully-settled reveal (no race here).
836
+ //
837
+ // Exception: if this reveal would only reopen the same editor-form
838
+ // slider, hand the already-open surface off instead of closing it,
839
+ // so the slider does not visibly close and reopen. We then own it
840
+ // and close it on our own restore.
841
+ const carrySlider = getEditorFormSlider([
842
+ ...resolveElements(),
843
+ ...(anchorSelector ? resolveElements(anchorSelector) : []),
844
+ ]);
845
+ const keepKeys = shouldCarryEditorFormSurface({
846
+ isSidebarOnly,
847
+ sliderExists: carrySlider !== null,
848
+ isSliderOpen: !isEditorFormSliderHidden(carrySlider),
849
+ })
850
+ ? ["editor-form"]
851
+ : [];
760
852
  const superseded = supersedeActiveReveal(controllerIdRef.current);
853
+ let carriedSurfaceOps = [];
761
854
  if (superseded) {
762
855
  try {
763
- await superseded.close();
856
+ carriedSurfaceOps = await superseded.closeKeeping(keepKeys);
764
857
  }
765
858
  catch {
766
859
  // ignore supersede failures
860
+ carriedSurfaceOps = [];
767
861
  }
768
862
  }
769
863
  const runId = globalThis.crypto?.randomUUID?.() ??
770
864
  `manual-${Date.now()}-${Math.random().toString(36).slice(2)}`;
771
- const resolveElements = (selector = selectorDef.selector) => selector ? getElementsForSelector(selector) : [];
772
865
  const runManualAction = async (actionName, elements) => {
773
866
  if (!actionName ||
774
867
  !editContext ||
@@ -786,10 +879,11 @@ function SelectorButton({ selectorDef, keyProp, }) {
786
879
  };
787
880
  await action(actionProps);
788
881
  };
789
- // Surfaces this reveal opens, in open order. Closed in reverse on
790
- // restore. The previous reveal was fully torn down above, so we
791
- // always start from an empty set.
792
- const surfaceOps = [];
882
+ // Surfaces this reveal owns, in open order. Closed in reverse on
883
+ // restore. Any surface handed off by the superseded reveal (the
884
+ // already-open editor-form slider) is adopted here, so we keep it
885
+ // open instead of reopening it and still close it on our restore.
886
+ const surfaceOps = [...carriedSurfaceOps];
793
887
  // Register a surface unless one with the same key was already
794
888
  // pushed by an earlier step in this same reveal.
795
889
  const pushSurface = (op) => {
@@ -844,7 +938,10 @@ function SelectorButton({ selectorDef, keyProp, }) {
844
938
  editContextRef.current?.setEditorFormHiddenForSlot(slotId, true);
845
939
  await editContextRef.current?.waitForSurfaceSettled?.("editor-form");
846
940
  },
847
- isOpen: () => !isEditorFormSliderHidden(getEditorFormSlider()),
941
+ isOpen: () => {
942
+ const slider = getEditorFormSlider();
943
+ return slider !== null && !isEditorFormSliderHidden(slider);
944
+ },
848
945
  });
849
946
  await editContext.waitForSurfaceSettled?.("editor-form");
850
947
  }
@@ -860,6 +957,7 @@ function SelectorButton({ selectorDef, keyProp, }) {
860
957
  : availabilityElements;
861
958
  const morePanelsWasOpen = isElementPresent("@more-sidebars-panel");
862
959
  const versionSelectorWasOpen = isElementPresent("@version-selector-list");
960
+ const notificationCenterWasOpen = isElementPresent("@notification-center-list");
863
961
  // Capture pre-reveal state for the AI Assistant reveals so we only
864
962
  // restore (close) what THIS button actually opened.
865
963
  const agentsPanelWasOpen = isAgentsPanelOpen();
@@ -898,6 +996,20 @@ function SelectorButton({ selectorDef, keyProp, }) {
898
996
  });
899
997
  }
900
998
  }
999
+ if (selectorDef.beforeAction === "open-notification-center") {
1000
+ const notificationCenterNowOpen = isElementPresent("@notification-center-list");
1001
+ if (!notificationCenterWasOpen && notificationCenterNowOpen) {
1002
+ pushSurface({
1003
+ key: "notification-center",
1004
+ close: async () => {
1005
+ closeNotificationCenterIfOpen();
1006
+ await waitForSelectorAnimations('[data-testid="notification-center-list"]');
1007
+ await waitForNotificationCenterClosed();
1008
+ },
1009
+ isOpen: () => isElementPresent("@notification-center-list"),
1010
+ });
1011
+ }
1012
+ }
901
1013
  if (selectorDef.beforeAction === "open-agents-panel" ||
902
1014
  selectorDef.beforeAction === "open-agent-settings") {
903
1015
  // The beforeAction already awaited the panel/popover open
@@ -970,9 +1082,8 @@ function SelectorButton({ selectorDef, keyProp, }) {
970
1082
  : ""
971
1083
  : selectorDef.selector;
972
1084
  // The highlight runs a finite CSS animation; highlightElement
973
- // resolves on its animationend. We do NOT await it before
974
- // registering the reveal (the button must turn green immediately);
975
- // close=auto instead chains its restore onto this lifetime.
1085
+ // resolves on its animationend. Stateful reveals register below
1086
+ // without awaiting it; close=auto chains restore onto this lifetime.
976
1087
  let highlightLifetime = Promise.resolve();
977
1088
  if (highlightSelector) {
978
1089
  const highlightTargets = await waitForVisibleElements(highlightSelector, 1500);
@@ -980,9 +1091,28 @@ function SelectorButton({ selectorDef, keyProp, }) {
980
1091
  highlightLifetime = highlightElement(highlightSelector, HIGHLIGHT_DURATION_MS);
981
1092
  }
982
1093
  }
983
- // If we opened any surface, this was a State-3 reveal: keep the
1094
+ const hasStatefulSurface = hasStatefulRevealSurface(surfaceOps.map((op) => op.key));
1095
+ if (surfaceOps.length > 0 && !hasStatefulSurface) {
1096
+ // Restore-only custom actions (for example field action reveals)
1097
+ // should clean up after the highlight, but they do not represent
1098
+ // an opened pane/popover that needs a green "close" state.
1099
+ void highlightLifetime.then(async () => {
1100
+ for (let i = surfaceOps.length - 1; i >= 0; i -= 1) {
1101
+ const op = surfaceOps[i];
1102
+ if (!op)
1103
+ continue;
1104
+ try {
1105
+ await op.close();
1106
+ }
1107
+ catch {
1108
+ // ignore individual restore failures
1109
+ }
1110
+ }
1111
+ });
1112
+ }
1113
+ // If we opened a real surface, this was a State-3 reveal: keep the
984
1114
  // button active (green) and register it for mutual exclusion.
985
- if (surfaceOps.length > 0) {
1115
+ if (hasStatefulSurface) {
986
1116
  const id = ++revealControllerSeq;
987
1117
  controllerIdRef.current = id;
988
1118
  revealRef.current = {
@@ -1000,6 +1130,7 @@ function SelectorButton({ selectorDef, keyProp, }) {
1000
1130
  registerActiveReveal({
1001
1131
  id,
1002
1132
  close: () => runRestoreRef.current(),
1133
+ closeKeeping: (keepKeys) => runRestoreKeepingRef.current(keepKeys),
1003
1134
  isStillOpen: () => revealRef.current?.isStillOpen() ?? false,
1004
1135
  });
1005
1136
  setIsActiveReveal(true);
@@ -1306,8 +1437,10 @@ function flattenNavigableSections(sections) {
1306
1437
  return flattened;
1307
1438
  }
1308
1439
  const MANUAL_SECTION_TEMPLATE_ID = "c5f1e8a2-9b50-4fe2-9b6d-3db00c3b3b8a";
1440
+ const MANUAL_SEARCH_DEBOUNCE_MS = 600;
1309
1441
  export function ManualBrowser({ onClose }) {
1310
1442
  const editContext = useEditContext();
1443
+ const editContextRef = useRef(editContext);
1311
1444
  const [toc, setToc] = useState([]);
1312
1445
  const selectedSectionId = editContext?.selectedHelpSectionId ?? null;
1313
1446
  const [currentSection, setCurrentSection] = useState(null);
@@ -1370,6 +1503,7 @@ export function ManualBrowser({ onClose }) {
1370
1503
  }
1371
1504
  return map;
1372
1505
  }, [toc]);
1506
+ const manualSectionsByIdRef = useRef(manualSectionsById);
1373
1507
  const backTargetSectionId = manualBackHistory.length > 0
1374
1508
  ? manualBackHistory[manualBackHistory.length - 1]
1375
1509
  : null;
@@ -1382,6 +1516,8 @@ export function ManualBrowser({ onClose }) {
1382
1516
  ? `Back to ${backTargetSection.title}`
1383
1517
  : "Back to contents";
1384
1518
  const backButtonText = backTargetSectionId === null ? "Contents" : "Back";
1519
+ editContextRef.current = editContext;
1520
+ manualSectionsByIdRef.current = manualSectionsById;
1385
1521
  // Keep selectedSectionId ref in sync
1386
1522
  useEffect(() => {
1387
1523
  selectedSectionIdRef.current = selectedSectionId;
@@ -1502,17 +1638,23 @@ export function ManualBrowser({ onClose }) {
1502
1638
  useEffect(() => {
1503
1639
  let cancelled = false;
1504
1640
  const trimmedQuery = searchQuery.trim();
1505
- if (!trimmedQuery || !editContext) {
1641
+ if (!trimmedQuery || !editContextRef.current) {
1506
1642
  setSearching(false);
1507
1643
  setSearchResults([]);
1508
1644
  return;
1509
1645
  }
1510
1646
  const timeoutId = window.setTimeout(async () => {
1647
+ const latestEditContext = editContextRef.current;
1648
+ if (!latestEditContext) {
1649
+ setSearching(false);
1650
+ setSearchResults([]);
1651
+ return;
1652
+ }
1511
1653
  setSearching(true);
1512
1654
  try {
1513
1655
  const result = await executeSearch({
1514
1656
  query: `${trimmedQuery}|template:${MANUAL_SECTION_TEMPLATE_ID}`,
1515
- editContext,
1657
+ editContext: latestEditContext,
1516
1658
  maxResults: 20,
1517
1659
  index: "master",
1518
1660
  skipValidation: true,
@@ -1521,8 +1663,9 @@ export function ManualBrowser({ onClose }) {
1521
1663
  return;
1522
1664
  if (result.type === "success") {
1523
1665
  const items = result.data || [];
1666
+ const latestManualSectionsById = manualSectionsByIdRef.current;
1524
1667
  const mapped = items
1525
- .map((item) => manualSectionsById.get(String(item.id || "").toLowerCase()))
1668
+ .map((item) => latestManualSectionsById.get(String(item.id || "").toLowerCase()))
1526
1669
  .filter((section) => !!section);
1527
1670
  const unique = Array.from(new Map(mapped.map((section) => [section.id, section])).values());
1528
1671
  setSearchResults(unique);
@@ -1543,12 +1686,12 @@ export function ManualBrowser({ onClose }) {
1543
1686
  setSearching(false);
1544
1687
  }
1545
1688
  }
1546
- }, 300);
1689
+ }, MANUAL_SEARCH_DEBOUNCE_MS);
1547
1690
  return () => {
1548
1691
  cancelled = true;
1549
1692
  window.clearTimeout(timeoutId);
1550
1693
  };
1551
- }, [searchQuery, editContext, manualSectionsById]);
1694
+ }, [searchQuery]);
1552
1695
  // Listen for websocket messages to auto-refresh when manual items change
1553
1696
  // Use ref for selectedSectionId to avoid stale closures and only re-register when selection actually changes
1554
1697
  useEffect(() => {