@parhelia/core 0.1.12888 → 0.1.12889

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 (246) hide show
  1. package/dist/agents-view/AgentCard.d.ts +2 -1
  2. package/dist/agents-view/AgentCard.js +16 -35
  3. package/dist/agents-view/AgentCard.js.map +1 -1
  4. package/dist/agents-view/AgentGalleryCard.d.ts +12 -0
  5. package/dist/agents-view/AgentGalleryCard.js +13 -0
  6. package/dist/agents-view/AgentGalleryCard.js.map +1 -0
  7. package/dist/agents-view/AgentGalleryView.d.ts +18 -0
  8. package/dist/agents-view/AgentGalleryView.js +88 -0
  9. package/dist/agents-view/AgentGalleryView.js.map +1 -0
  10. package/dist/agents-view/AgentsView.js +39 -11
  11. package/dist/agents-view/AgentsView.js.map +1 -1
  12. package/dist/agents-view/AgentsWorkspaceView.js +40 -21
  13. package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
  14. package/dist/agents-view/DateAgentsGroup.d.ts +2 -1
  15. package/dist/agents-view/DateAgentsGroup.js +2 -2
  16. package/dist/agents-view/DateAgentsGroup.js.map +1 -1
  17. package/dist/agents-view/ProfileAgentsGroup.d.ts +2 -1
  18. package/dist/agents-view/ProfileAgentsGroup.js +5 -5
  19. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  20. package/dist/agents-view/RenameAgentDialog.d.ts +12 -0
  21. package/dist/agents-view/RenameAgentDialog.js +40 -0
  22. package/dist/agents-view/RenameAgentDialog.js.map +1 -0
  23. package/dist/components/FilterInput.d.ts +2 -0
  24. package/dist/components/FilterInput.js +4 -2
  25. package/dist/components/FilterInput.js.map +1 -1
  26. package/dist/components/ui/alert-dialog.d.ts +1 -1
  27. package/dist/components/ui/alert-dialog.js +5 -5
  28. package/dist/components/ui/alert-dialog.js.map +1 -1
  29. package/dist/components/ui/alert.d.ts +3 -2
  30. package/dist/components/ui/alert.js +9 -4
  31. package/dist/components/ui/alert.js.map +1 -1
  32. package/dist/components/ui/badge.d.ts +1 -1
  33. package/dist/components/ui/button.d.ts +9 -4
  34. package/dist/components/ui/button.js +16 -9
  35. package/dist/components/ui/button.js.map +1 -1
  36. package/dist/components/ui/dialog.d.ts +1 -1
  37. package/dist/components/ui/dialog.js +4 -3
  38. package/dist/components/ui/dialog.js.map +1 -1
  39. package/dist/components/ui/styled-dialog-title.js +1 -1
  40. package/dist/components/ui/styled-dialog-title.js.map +1 -1
  41. package/dist/editor/FieldListField.js +6 -2
  42. package/dist/editor/FieldListField.js.map +1 -1
  43. package/dist/editor/GlobalMenuBar.js +2 -1
  44. package/dist/editor/GlobalMenuBar.js.map +1 -1
  45. package/dist/editor/LinkEditorDialog.js +3 -3
  46. package/dist/editor/LinkEditorDialog.js.map +1 -1
  47. package/dist/editor/ai/AgentInlineDialogContent.js +1 -1
  48. package/dist/editor/ai/AgentInlineDialogContent.js.map +1 -1
  49. package/dist/editor/ai/Agents.js +2 -2
  50. package/dist/editor/ai/Agents.js.map +1 -1
  51. package/dist/editor/ai/InlineAiDialog.js +1 -1
  52. package/dist/editor/ai/InlineAiDialog.js.map +1 -1
  53. package/dist/editor/ai/dialogs/QuestionnaireInline.js +52 -82
  54. package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
  55. package/dist/editor/ai/terminal/agentQuestionnaireRecap.d.ts +82 -0
  56. package/dist/editor/ai/terminal/agentQuestionnaireRecap.js +277 -0
  57. package/dist/editor/ai/terminal/agentQuestionnaireRecap.js.map +1 -0
  58. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.d.ts +3 -0
  59. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.js +3 -3
  60. package/dist/editor/ai/terminal/agentQuestionnaireTranscriptRecovery.js.map +1 -1
  61. package/dist/editor/ai/terminal/agentSessionLiveTotals.d.ts +5 -0
  62. package/dist/editor/ai/terminal/agentSessionLiveTotals.js +14 -0
  63. package/dist/editor/ai/terminal/agentSessionLiveTotals.js.map +1 -1
  64. package/dist/editor/ai/terminal/agentSessionSnapshot.js +2 -0
  65. package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
  66. package/dist/editor/ai/terminal/components/AgentGreeting.js +5 -2
  67. package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
  68. package/dist/editor/ai/terminal/components/AgentProjectProgress.d.ts +12 -0
  69. package/dist/editor/ai/terminal/components/AgentProjectProgress.js +207 -0
  70. package/dist/editor/ai/terminal/components/AgentProjectProgress.js.map +1 -0
  71. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.d.ts +4 -3
  72. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +4 -19
  73. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  74. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.d.ts +5 -1
  75. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js +33 -2
  76. package/dist/editor/ai/terminal/components/AgentTerminalFullUpperContent.js.map +1 -1
  77. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.d.ts +2 -0
  78. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +20 -1
  79. package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
  80. package/dist/editor/ai/terminal/components/AgentTerminalView.d.ts +3 -2
  81. package/dist/editor/ai/terminal/components/AgentTerminalView.js +11 -2
  82. package/dist/editor/ai/terminal/components/AgentTerminalView.js.map +1 -1
  83. package/dist/editor/ai/terminal/components/AiResponseMessage.js +59 -7
  84. package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
  85. package/dist/editor/ai/terminal/components/QuestionnaireRecap.d.ts +9 -0
  86. package/dist/editor/ai/terminal/components/QuestionnaireRecap.js +56 -0
  87. package/dist/editor/ai/terminal/components/QuestionnaireRecap.js.map +1 -0
  88. package/dist/editor/ai/terminal/contextBreakdown.d.ts +17 -0
  89. package/dist/editor/ai/terminal/contextBreakdown.js +58 -0
  90. package/dist/editor/ai/terminal/contextBreakdown.js.map +1 -0
  91. package/dist/editor/ai/terminal/types.d.ts +2 -0
  92. package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.d.ts +29 -0
  93. package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.js +68 -0
  94. package/dist/editor/ai/terminal/useAgentAutoStartOnCreate.js.map +1 -0
  95. package/dist/editor/ai/terminal/useAgentInlineDialogEvents.js +8 -3
  96. package/dist/editor/ai/terminal/useAgentInlineDialogEvents.js.map +1 -1
  97. package/dist/editor/ai/terminal/useAgentInlineDialogState.d.ts +10 -3
  98. package/dist/editor/ai/terminal/useAgentInlineDialogState.js +33 -4
  99. package/dist/editor/ai/terminal/useAgentInlineDialogState.js.map +1 -1
  100. package/dist/editor/ai/terminal/useAgentRunResyncSocketHandler.js +16 -2
  101. package/dist/editor/ai/terminal/useAgentRunResyncSocketHandler.js.map +1 -1
  102. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js +3 -1
  103. package/dist/editor/ai/terminal/useAgentRunStatusSocketHandler.js.map +1 -1
  104. package/dist/editor/ai/terminal/useAgentSession.js +12 -1
  105. package/dist/editor/ai/terminal/useAgentSession.js.map +1 -1
  106. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.d.ts +3 -0
  107. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js +6 -1
  108. package/dist/editor/ai/terminal/useAgentSubmitLifecycle.js.map +1 -1
  109. package/dist/editor/ai/terminal/useAgentTerminalController.js +48 -4
  110. package/dist/editor/ai/terminal/useAgentTerminalController.js.map +1 -1
  111. package/dist/editor/ai/terminal/useAgentTerminalViewProps.d.ts +1 -0
  112. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js +2 -1
  113. package/dist/editor/ai/terminal/useAgentTerminalViewProps.js.map +1 -1
  114. package/dist/editor/ai/terminal/useAgentToolCallHandler.js +13 -1
  115. package/dist/editor/ai/terminal/useAgentToolCallHandler.js.map +1 -1
  116. package/dist/editor/ai/terminal/useAgentToolResultHandler.js +31 -7
  117. package/dist/editor/ai/terminal/useAgentToolResultHandler.js.map +1 -1
  118. package/dist/editor/bridge/BridgeClient.d.ts +1 -8
  119. package/dist/editor/bridge/BridgeClient.js +2 -4
  120. package/dist/editor/bridge/BridgeClient.js.map +1 -1
  121. package/dist/editor/bridge/protocol.d.ts +517 -0
  122. package/dist/editor/bridge/protocol.js +188 -0
  123. package/dist/editor/bridge/protocol.js.map +1 -0
  124. package/dist/editor/client/AboutDialog.js +15 -4
  125. package/dist/editor/client/AboutDialog.js.map +1 -1
  126. package/dist/editor/client/EditorShell.js +36 -6
  127. package/dist/editor/client/EditorShell.js.map +1 -1
  128. package/dist/editor/client/editContext.d.ts +6 -0
  129. package/dist/editor/client/editContext.js.map +1 -1
  130. package/dist/editor/client/hooks/useSocketMessageHandler.d.ts +3 -0
  131. package/dist/editor/client/hooks/useSocketMessageHandler.js +57 -25
  132. package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
  133. package/dist/editor/client/hooks/useWorkbox.d.ts +1 -0
  134. package/dist/editor/client/hooks/useWorkbox.js +14 -1
  135. package/dist/editor/client/hooks/useWorkbox.js.map +1 -1
  136. package/dist/editor/client/operationToasts.d.ts +2 -0
  137. package/dist/editor/client/operationToasts.js +35 -0
  138. package/dist/editor/client/operationToasts.js.map +1 -0
  139. package/dist/editor/client/operations.d.ts +4 -0
  140. package/dist/editor/client/operations.js +134 -74
  141. package/dist/editor/client/operations.js.map +1 -1
  142. package/dist/editor/client/waitForEditOperationTerminal.d.ts +1 -0
  143. package/dist/editor/client/waitForEditOperationTerminal.js +1 -1
  144. package/dist/editor/client/waitForEditOperationTerminal.js.map +1 -1
  145. package/dist/editor/commands/itemCommands.js +5 -16
  146. package/dist/editor/commands/itemCommands.js.map +1 -1
  147. package/dist/editor/field-types/CheckboxEditor.js +3 -1
  148. package/dist/editor/field-types/CheckboxEditor.js.map +1 -1
  149. package/dist/editor/field-types/MultiLineText.js +24 -7
  150. package/dist/editor/field-types/MultiLineText.js.map +1 -1
  151. package/dist/editor/field-types/SingleLineText.js +19 -2
  152. package/dist/editor/field-types/SingleLineText.js.map +1 -1
  153. package/dist/editor/field-types/useTextCompletion.d.ts +20 -0
  154. package/dist/editor/field-types/useTextCompletion.js +166 -0
  155. package/dist/editor/field-types/useTextCompletion.js.map +1 -0
  156. package/dist/editor/menubar/OperationsIndicator.d.ts +7 -0
  157. package/dist/editor/menubar/OperationsIndicator.js +87 -0
  158. package/dist/editor/menubar/OperationsIndicator.js.map +1 -0
  159. package/dist/editor/menubar/ToolbarFactory.js +4 -1
  160. package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
  161. package/dist/editor/menubar/WorkflowButton.js +7 -4
  162. package/dist/editor/menubar/WorkflowButton.js.map +1 -1
  163. package/dist/editor/menubar/toolbar-sections/EditControls.js +7 -3
  164. package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
  165. package/dist/editor/menubar/toolbar-sections/ViewportControls.js +4 -1
  166. package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
  167. package/dist/editor/notifications/NotificationCenter.js +28 -27
  168. package/dist/editor/notifications/NotificationCenter.js.map +1 -1
  169. package/dist/editor/notifications/NotificationItem.js +99 -15
  170. package/dist/editor/notifications/NotificationItem.js.map +1 -1
  171. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.d.ts +1 -1
  172. package/dist/editor/page-editor-chrome/PageEditorChrome.d.ts +1 -1
  173. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js +7 -1
  174. package/dist/editor/page-editor-chrome/PlaceholderDropZone.js.map +1 -1
  175. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +3 -10
  176. package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
  177. package/dist/editor/page-editor-chrome/overlay/geometry.d.ts +2 -2
  178. package/dist/editor/page-editor-chrome/useBridgeInlineEditing.d.ts +1 -1
  179. package/dist/editor/page-viewer/MiniMap.d.ts +21 -0
  180. package/dist/editor/page-viewer/MiniMap.js +113 -11
  181. package/dist/editor/page-viewer/MiniMap.js.map +1 -1
  182. package/dist/editor/page-viewer/PageViewerFrame.js +88 -22
  183. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  184. package/dist/editor/page-viewer/bridgeFieldPatch.d.ts +1 -2
  185. package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
  186. package/dist/editor/page-viewer/pageViewContext.d.ts +1 -1
  187. package/dist/editor/reviews/DecisionsMatrix.js +5 -1
  188. package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
  189. package/dist/editor/reviews/SuggestedEdit.js +12 -2
  190. package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
  191. package/dist/editor/reviews/latestFeedbackData.js +7 -1
  192. package/dist/editor/reviews/latestFeedbackData.js.map +1 -1
  193. package/dist/editor/reviews/suggestedEditState.d.ts +2 -0
  194. package/dist/editor/reviews/suggestedEditState.js +20 -0
  195. package/dist/editor/reviews/suggestedEditState.js.map +1 -1
  196. package/dist/editor/reviews/suggestionContentChange.d.ts +1 -1
  197. package/dist/editor/reviews/suggestionContentChange.js +23 -3
  198. package/dist/editor/reviews/suggestionContentChange.js.map +1 -1
  199. package/dist/editor/services/agentService.d.ts +6 -0
  200. package/dist/editor/services/agentService.js +14 -0
  201. package/dist/editor/services/agentService.js.map +1 -1
  202. package/dist/editor/services/aiService.d.ts +5 -0
  203. package/dist/editor/services/aiService.js.map +1 -1
  204. package/dist/editor/settings/About.js +1 -1
  205. package/dist/editor/settings/About.js.map +1 -1
  206. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +1 -0
  207. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  208. package/dist/editor/settings/panels/AgentToolsPanel.js +61 -33
  209. package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
  210. package/dist/editor/settings/panels/ClusterInstancesPanel.js +2 -1
  211. package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
  212. package/dist/editor/settings/panels/StatusPanel.js +10 -7
  213. package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
  214. package/dist/editor/sidebar/Completions.js +1 -1
  215. package/dist/editor/sidebar/Completions.js.map +1 -1
  216. package/dist/editor/sidebar/ComponentTree.js +1 -1
  217. package/dist/editor/sidebar/ComponentTree.js.map +1 -1
  218. package/dist/editor/sidebar/OperationItem.js +1 -1
  219. package/dist/editor/sidebar/OperationItem.js.map +1 -1
  220. package/dist/editor/sidebar/Workbox.js +18 -4
  221. package/dist/editor/sidebar/Workbox.js.map +1 -1
  222. package/dist/editor/ui/DialogButtons.d.ts +3 -1
  223. package/dist/editor/ui/DialogButtons.js +3 -2
  224. package/dist/editor/ui/DialogButtons.js.map +1 -1
  225. package/dist/editor/ui/ItemCollectionEditor.js +2 -2
  226. package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
  227. package/dist/editor/ui/PublishItemDialog.js +4 -6
  228. package/dist/editor/ui/PublishItemDialog.js.map +1 -1
  229. package/dist/editor/version-diff/versionDiffTargets.d.ts +1 -1
  230. package/dist/editor/workflowFields.d.ts +1 -0
  231. package/dist/editor/workflowFields.js +16 -0
  232. package/dist/editor/workflowFields.js.map +1 -0
  233. package/dist/index.d.ts +4 -2
  234. package/dist/index.js +3 -2
  235. package/dist/index.js.map +1 -1
  236. package/dist/revision.d.ts +2 -2
  237. package/dist/revision.js +2 -2
  238. package/dist/splash-screen/NewPage.js +26 -7
  239. package/dist/splash-screen/NewPage.js.map +1 -1
  240. package/dist/task-board/TaskBoardWorkspace.js +57 -4
  241. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  242. package/dist/task-board/components/TaskBoardHomeView.d.ts +27 -0
  243. package/dist/task-board/components/TaskBoardHomeView.js +158 -0
  244. package/dist/task-board/components/TaskBoardHomeView.js.map +1 -0
  245. package/package.json +1 -2
  246. package/styles.css +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/editor/bridge/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,24 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { Dialog, DialogContent, DialogTitle } from "../../components/ui/dialog";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dialog, DialogClose, DialogContent, DialogTitle, } from "../../components/ui/dialog";
3
3
  import { useImperativeHandle, useState, forwardRef, useEffect } from "react";
4
4
  import { buildDate, version } from "../../revision";
5
- import { LicenseBadge, useLicense } from "../../licensing";
5
+ import { useLicense } from "../../licensing";
6
6
  import { ParheliaIcon } from "../ui/ParheliaIcon";
7
+ import { X } from "lucide-react";
7
8
  export const AboutDialog = forwardRef(function AboutDialog(props, ref) {
8
9
  const [visible, setVisible] = useState(false);
9
10
  const license = useLicense();
10
11
  const licenseeCompanyName = license.licenseStatus?.companyName?.trim();
12
+ const showLicenseRows = !license.licenseStatus?.licensingDisabled;
13
+ const licenseLabel = license.isLoading
14
+ ? "Checking"
15
+ : license.isLicensed
16
+ ? license.licenseType === "trial"
17
+ ? license.daysRemaining != null
18
+ ? `Trial (${license.daysRemaining}d)`
19
+ : "Trial"
20
+ : "Licensed"
21
+ : "Unlicensed";
11
22
  useImperativeHandle(ref, () => ({
12
23
  onClose: (result) => {
13
24
  setVisible(false);
@@ -22,6 +33,6 @@ export const AboutDialog = forwardRef(function AboutDialog(props, ref) {
22
33
  setVisible(false);
23
34
  props.onClose(null);
24
35
  }
25
- }, children: _jsxs(DialogContent, { className: "border-border-default bg-white text-neutral-grey-100 overflow-hidden p-0 shadow-2xl sm:max-w-105", children: [_jsx(DialogTitle, { className: "sr-only", children: "About Parhelia" }), _jsx("div", { className: "from-white to-neutral-grey-5 border-border-default/80 relative border-b bg-linear-to-b px-8 pt-8 pb-6", children: _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-100 flex h-16 w-16 shrink-0 items-center justify-center rounded-xl border border-border-default/60 shadow-sm", children: _jsx(ParheliaIcon, { size: 34, animated: false }) }), _jsxs("div", { className: "min-w-0 flex-1 pt-1", children: [_jsx("p", { className: "text-neutral-grey-50 text-xs font-medium tracking-[0.24em] uppercase", children: "About" }), _jsx("h2", { className: "text-neutral-grey-100 mt-3 text-[28px] leading-none font-semibold tracking-tight", children: "Parhelia" }), _jsx("p", { className: "text-neutral-grey-50 mt-3 text-sm leading-relaxed", children: "Experience content in a new light" })] })] }) }), _jsxs("div", { className: "flex flex-col gap-6 px-8 py-8", children: [_jsx("div", { className: "w-full overflow-hidden rounded-xl border border-border-default bg-white shadow-sm", children: _jsxs("div", { className: "divide-y divide-border-default", children: [_jsxs("div", { className: "flex items-center justify-between gap-4 px-5 py-4 text-sm", children: [_jsx("span", { className: "text-neutral-grey-50 font-medium tracking-wide", children: "Version" }), _jsx("span", { className: "text-neutral-grey-100 font-semibold tabular-nums", children: version })] }), _jsxs("div", { className: "flex items-center justify-between gap-4 px-5 py-4 text-sm", children: [_jsx("span", { className: "text-neutral-grey-50 font-medium tracking-wide", children: "Build Date" }), _jsx("span", { className: "text-neutral-grey-100 font-medium tabular-nums", children: buildDate })] }), !license?.licenseStatus?.licensingDisabled && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between gap-4 px-5 py-4 text-sm", children: [_jsx("span", { className: "text-neutral-grey-50 font-medium tracking-wide", children: "License" }), _jsx(LicenseBadge, {})] }), licenseeCompanyName && (_jsxs("div", { className: "flex min-w-0 items-center justify-between gap-4 px-5 py-4 text-sm", children: [_jsx("span", { className: "text-neutral-grey-50 font-medium tracking-wide", children: "Licensee" }), _jsx("span", { className: "text-neutral-grey-100 min-w-0 text-right font-medium wrap-break-word", children: licenseeCompanyName })] }))] }))] }) }), _jsxs("div", { className: "space-y-4", children: [_jsx("p", { className: "text-neutral-grey-50 text-balance text-sm leading-relaxed", children: "Built with passion by the Parhelia team at Canvas Reply. Focusing on the future of AI-driven content management." }), _jsxs("div", { className: "text-neutral-grey-50 text-balance text-2xs font-medium tracking-[0.16em] uppercase", children: ["\u00A9 ", new Date().getFullYear(), " Canvas Reply GmbH. All rights reserved."] })] })] })] }) }));
36
+ }, children: _jsxs(DialogContent, { className: "border-border-default/70 text-neutral-grey-100 overflow-hidden rounded-[18px] bg-white p-0 shadow-2xl sm:max-w-[430px]", overlayClassName: "bg-neutral-grey-100/45 backdrop-blur-md", showCloseButton: false, children: [_jsx(DialogTitle, { className: "sr-only", children: "About Parhelia" }), _jsx(DialogClose, { asChild: true, children: _jsx("button", { type: "button", "aria-label": "Close", "data-testid": "dialog-close", className: "text-neutral-grey-50 hover:text-neutral-grey-100 focus-visible:ring-ring/40 absolute top-7 right-7 z-50 inline-flex h-7 w-7 cursor-pointer items-center justify-center rounded transition-colors outline-none focus-visible:ring-[3px]", children: _jsx(X, { className: "h-5 w-5", strokeWidth: 1.5, "aria-hidden": "true" }) }) }), _jsxs("div", { className: "flex min-h-[525px] flex-col items-center px-12 pt-16 pb-10 text-center", children: [_jsx("div", { className: "mb-11 flex justify-center", children: _jsx(ParheliaIcon, { size: 108, animated: false }) }), _jsxs("div", { className: "mb-10 grid w-full max-w-[245px] grid-cols-[max-content_minmax(0,1fr)] gap-x-3 gap-y-3 text-left text-sm leading-none", children: [_jsx("span", { className: "text-neutral-grey-100 text-right font-semibold", children: "Version" }), _jsx("span", { className: "text-neutral-grey-50 min-w-0 wrap-break-word tabular-nums", children: version }), _jsx("span", { className: "text-neutral-grey-100 text-right font-semibold", children: "Build Date" }), _jsx("span", { className: "text-neutral-grey-50 min-w-0 wrap-break-word tabular-nums", children: buildDate }), showLicenseRows && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-neutral-grey-100 text-right font-semibold", children: "License" }), _jsx("span", { className: "text-neutral-grey-50 min-w-0 wrap-break-word", children: licenseLabel }), licenseeCompanyName && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-neutral-grey-100 text-right font-semibold", children: "Licensee" }), _jsx("span", { className: "text-neutral-grey-50 min-w-0 wrap-break-word", children: licenseeCompanyName })] }))] }))] }), _jsxs("div", { className: "mt-auto space-y-5", children: [_jsx("p", { className: "text-neutral-grey-50 mx-auto max-w-[290px] text-sm leading-[1.28] font-medium", children: "Built with passion by the Parhelia team at Canvas Reply. Focusing on the future of AI-driven content management." }), _jsxs("div", { className: "text-neutral-grey-50 mx-auto max-w-[255px] text-sm leading-[1.28] font-medium", children: ["\u00A9 ", new Date().getFullYear(), " Canvas Reply GmbH. All rights reserved."] })] })] })] }) }));
26
37
  });
27
38
  //# sourceMappingURL=AboutDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AboutDialog.js","sourceRoot":"","sources":["../../../src/editor/client/AboutDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AboutDialog.js","sourceRoot":"","sources":["../../../src/editor/client/AboutDialog.tsx"],"names":[],"mappings":"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"}
@@ -47,6 +47,7 @@ import { QuickItemSwitcher } from "../QuickItemSwitcher";
47
47
  import { useEditorSlotContext, } from "../views/editorSlotContext";
48
48
  import { getComments, getAvailableCommentTags, } from "../services/reviewsService";
49
49
  import { useReviews } from "../reviews/useReviews";
50
+ import { isSuggestedEditRemoved } from "../reviews/suggestedEditState";
50
51
  import { COMMENT_TRANSIENT_ELEMENT_KEY, COMMENT_TRANSIENT_SELECTION_RECT, } from "../reviews/commentTransientSelection";
51
52
  import uuid from "react-uuid";
52
53
  import { flushSync } from "react-dom";
@@ -509,6 +510,10 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
509
510
  getFieldModificationStores,
510
511
  ]);
511
512
  const [comments, setComments] = useState([]);
513
+ // True once loadComments has succeeded for the current item. Destructive
514
+ // decisions that depend on a suggestion's comment thread (e.g. auto-deleting
515
+ // a reverted no-op suggestion) must not run on the initial empty array.
516
+ const [commentsLoaded, setCommentsLoaded] = useState(false);
512
517
  const [suggestedEdits, setSuggestedEdits] = useState([]);
513
518
  const [showSuggestedEdits, setShowSuggestedEdits] = useState(false);
514
519
  const [showSuggestedEditsDiff, setShowSuggestedEditsDiff] = useState(false);
@@ -1772,6 +1777,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1772
1777
  allComments.sort((a, b) => a.position - b.position);
1773
1778
  return allComments;
1774
1779
  });
1780
+ setCommentsLoaded(true);
1775
1781
  }, [currentItemDescriptor, searchParams]);
1776
1782
  // Assuming currentItemDescriptor, ui, state, handleErrorResult, and setSuggestedEdits
1777
1783
  // are available in your component context.
@@ -1782,7 +1788,9 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
1782
1788
  const result = await getSuggestedEdits(item.descriptor.id, item.descriptor.language, item.descriptor.version, reviewId ?? undefined);
1783
1789
  if (handleErrorResult(result, ui, state))
1784
1790
  return;
1785
- const edits = result.data || [];
1791
+ // A refetch can race a locally reverted suggestion's server delete; don't
1792
+ // resurrect suggestions the user already removed.
1793
+ const edits = (result.data || []).filter((edit) => !isSuggestedEditRemoved(edit.id));
1786
1794
  setSuggestedEdits(edits);
1787
1795
  }, [item, searchParams]);
1788
1796
  useEffect(() => {
@@ -2217,6 +2225,8 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2217
2225
  useEffect(() => {
2218
2226
  if (!currentItemDescriptor)
2219
2227
  return;
2228
+ // The previous item's comments don't speak for the new one.
2229
+ setCommentsLoaded(false);
2220
2230
  loadComments();
2221
2231
  loadSuggestedEdits();
2222
2232
  }, [currentItemDescriptor]);
@@ -2836,6 +2846,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
2836
2846
  historyMode,
2837
2847
  refreshHistory,
2838
2848
  comments,
2849
+ commentsLoaded,
2839
2850
  suggestedEdits,
2840
2851
  setSuggestedEdits,
2841
2852
  mode,
@@ -3008,13 +3019,15 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3008
3019
  onOperationExecuted,
3009
3020
  };
3010
3021
  // moved to useMediaSelector
3011
- const { workboxItems, isWorkboxLoading } = useWorkbox({
3022
+ const { workboxItems, isWorkboxLoading, refreshWorkbox } = useWorkbox({
3012
3023
  page,
3013
3024
  currentItemDescriptor,
3014
3025
  validate,
3015
3026
  });
3016
- // Ref for markOperationComplete callback (needed because operationsContext is created later)
3027
+ // Refs for operations-context callbacks (needed because operationsContext is created later)
3017
3028
  const markOperationCompleteRef = useRef(null);
3029
+ const addExecutingOperationRef = useRef(null);
3030
+ const updateExecutingOperationProgressRef = useRef(null);
3018
3031
  // WebSocket message handler and connection
3019
3032
  const messageHandler = useSocketMessageHandler({
3020
3033
  sessionId,
@@ -3039,6 +3052,13 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3039
3052
  markOperationComplete: (operationId) => {
3040
3053
  markOperationCompleteRef.current?.(operationId);
3041
3054
  },
3055
+ addExecutingOperation: (operation) => {
3056
+ addExecutingOperationRef.current?.(operation);
3057
+ },
3058
+ updateExecutingOperationProgress: (operationId, progress, statusMessage) => {
3059
+ updateExecutingOperationProgressRef.current?.(operationId, progress, statusMessage);
3060
+ },
3061
+ refreshWorkbox,
3042
3062
  });
3043
3063
  // Concurrent user limit error state
3044
3064
  const [concurrentUserLimitError, setConcurrentUserLimitError] = useState(null);
@@ -3604,13 +3624,21 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
3604
3624
  const result = await command.execute(context);
3605
3625
  return result;
3606
3626
  }, [editContextRef, pathname, router, searchParams, openDialog]);
3607
- const operationsContext = getOperationsContext(state, ui);
3627
+ const operationsContext = getOperationsContext({ ...state, refreshWorkbox }, ui);
3608
3628
  const operations = operationsContext.ops;
3609
- // Update the ref for markOperationComplete so the socket handler can access it
3629
+ // Update the refs so the socket handler can access the operations-context callbacks
3610
3630
  useEffect(() => {
3611
3631
  markOperationCompleteRef.current =
3612
3632
  operationsContext.context.markOperationComplete;
3613
- }, [operationsContext.context.markOperationComplete]);
3633
+ addExecutingOperationRef.current =
3634
+ operationsContext.context.addExecutingOperation;
3635
+ updateExecutingOperationProgressRef.current =
3636
+ operationsContext.context.updateExecutingOperationProgress;
3637
+ }, [
3638
+ operationsContext.context.markOperationComplete,
3639
+ operationsContext.context.addExecutingOperation,
3640
+ operationsContext.context.updateExecutingOperationProgress,
3641
+ ]);
3614
3642
  // Replace selected text with new content (for inline AI editing)
3615
3643
  const replaceSelectedText = useCallback(async (newText, selectionOverride) => {
3616
3644
  const rangeToReplace = selectionOverride ?? selectedRange ?? lastTextSelectionRangeRef.current;
@@ -4269,6 +4297,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4269
4297
  setClipboard,
4270
4298
  workboxItems,
4271
4299
  isWorkboxLoading,
4300
+ refreshWorkbox,
4272
4301
  requestRefresh,
4273
4302
  refreshCompletedFlag,
4274
4303
  openCreatePageDialog: () => {
@@ -4889,6 +4918,7 @@ export function EditorShell({ configuration, className, item: loadItemDescriptor
4889
4918
  clipboard,
4890
4919
  workboxItems,
4891
4920
  isWorkboxLoading,
4921
+ refreshWorkbox,
4892
4922
  requestRefresh,
4893
4923
  refreshCompletedFlag,
4894
4924
  searchParams,