@nextclaw/ui 0.26.0 → 0.26.2

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 (308) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/.vite/manifest.json +1143 -1133
  3. package/dist/assets/{abnfDiagram-VRR7QNED-Bjrmb5-o.js → abnfDiagram-VRR7QNED-Dcw10Yt1.js} +1 -1
  4. package/dist/assets/{account-panel-C1S3xtUB.js → account-panel-ZM2qzKF4.js} +1 -1
  5. package/dist/assets/{aiden0z-pptx-renderer.es-DO4DCX3e.js → aiden0z-pptx-renderer.es--oNqetPA.js} +1 -1
  6. package/dist/assets/api-Cjq-o1VN.js +20 -0
  7. package/dist/assets/app-presenter-provider-C02YPoMr.js +124 -0
  8. package/dist/assets/{appearance-settings-page-BljTr6nB.js → appearance-settings-page-B4zouKzg.js} +1 -1
  9. package/dist/assets/{arc-g4XaP3S4.js → arc-DBRedCax.js} +1 -1
  10. package/dist/assets/architecture-TIHT7OUA-CvnC-LeA.js +1 -0
  11. package/dist/assets/{architectureDiagram-ZJ3FMSHR-CAP7YDux.js → architectureDiagram-ZJ3FMSHR-Dufhtuv-.js} +1 -1
  12. package/dist/assets/{blockDiagram-677ZJIJ3-DhaP0zUG.js → blockDiagram-677ZJIJ3-BUk0vtJ7.js} +1 -1
  13. package/dist/assets/{book-open-vxpV2eSM.js → book-open-AteA89HX.js} +1 -1
  14. package/dist/assets/{c4Diagram-LMCZKHZV-DHCQJJkD.js → c4Diagram-LMCZKHZV-CxDcVE9p.js} +1 -1
  15. package/dist/assets/{card-D9NYhSdf.js → card-BLXvBstA.js} +1 -1
  16. package/dist/assets/channel-CpMstUPF.js +1 -0
  17. package/dist/assets/{channels-list-page-BiHA1zZd.js → channels-list-page-fj8kMo-T.js} +1 -1
  18. package/dist/assets/chunk-2Q5K7J3B-Djp3VF0s.js +1 -0
  19. package/dist/assets/{chunk-32BRIVSS-BcQlxl4v.js → chunk-32BRIVSS-DSF3KElA.js} +1 -1
  20. package/dist/assets/{chunk-52WLFC77-ClPpG-2S.js → chunk-52WLFC77-Costxzr3.js} +1 -1
  21. package/dist/assets/{chunk-5FCAYU7R-B_qmYOdX.js → chunk-5FCAYU7R-rhqzGGZo.js} +1 -1
  22. package/dist/assets/{chunk-5HE753X5-DTO-V56q.js → chunk-5HE753X5-BsEsmIao.js} +1 -1
  23. package/dist/assets/{chunk-5JV3BV7I-CU1SOaaG.js → chunk-5JV3BV7I-Dqw_DCoN.js} +1 -1
  24. package/dist/assets/{chunk-5TONJI2A-CzSDkWNa.js → chunk-5TONJI2A-Cft82fp8.js} +1 -1
  25. package/dist/assets/{chunk-5VM5RSS4-ChkfqIRE.js → chunk-5VM5RSS4-DqNHn9Dl.js} +1 -1
  26. package/dist/assets/{chunk-7BUUIJ7U-Du3Ozi62.js → chunk-7BUUIJ7U-A5SBEMYY.js} +1 -1
  27. package/dist/assets/{chunk-BIQX33UG-C-HVafHB.js → chunk-BIQX33UG-1Ng3mTrH.js} +1 -1
  28. package/dist/assets/{chunk-C7G6YPKG-BSjZ86D0.js → chunk-C7G6YPKG-DRJEy8ZI.js} +1 -1
  29. package/dist/assets/{chunk-CQNSW5MT-1D1W2lF6.js → chunk-CQNSW5MT-Bydv_J3J.js} +1 -1
  30. package/dist/assets/{chunk-CYSBUYHQ-ISpyj_lK.js → chunk-CYSBUYHQ-HkMIg12u.js} +1 -1
  31. package/dist/assets/{chunk-EMLP6XTP-Cp8iUBt2.js → chunk-EMLP6XTP-C5ndDvm3.js} +1 -1
  32. package/dist/assets/{chunk-EX3LRPZG-BN5RzF5j.js → chunk-EX3LRPZG-DzeloZRo.js} +1 -1
  33. package/dist/assets/{chunk-FWX5IMBZ-DecJDW4r.js → chunk-FWX5IMBZ-n_2_CLTQ.js} +2 -2
  34. package/dist/assets/{chunk-HOUHSVGY-BE_XNgGk.js → chunk-HOUHSVGY-kx_slvu3.js} +1 -1
  35. package/dist/assets/{chunk-ICXQ74PX-BFOKMkWV.js → chunk-ICXQ74PX-sQLMURqL.js} +1 -1
  36. package/dist/assets/{chunk-JG7HCLWE-DL-pl8VB.js → chunk-JG7HCLWE-CMUn5Elc.js} +1 -1
  37. package/dist/assets/{chunk-JWPE2WC7-B-bcwfmh.js → chunk-JWPE2WC7-Cra3s-Uk.js} +1 -1
  38. package/dist/assets/{chunk-MOJQB5TN-BC0taFro.js → chunk-MOJQB5TN-umcrg5Bi.js} +1 -1
  39. package/dist/assets/{chunk-MOZMSUNE-RrhfU6MO.js → chunk-MOZMSUNE-BnljD1ig.js} +1 -1
  40. package/dist/assets/{chunk-OGEWGWER-TuI7SR7i.js → chunk-OGEWGWER-BXx5pQjU.js} +1 -1
  41. package/dist/assets/{chunk-OSBZ3O6U-C5jMBKlU.js → chunk-OSBZ3O6U-D-1qfdWu.js} +1 -1
  42. package/dist/assets/{chunk-PUDLZKDR-C5lMBn0K.js → chunk-PUDLZKDR-DLzX78LC.js} +1 -1
  43. package/dist/assets/{chunk-Q4XR5HBZ-B-kzUbwT.js → chunk-Q4XR5HBZ-DTK-rtW6.js} +1 -1
  44. package/dist/assets/{chunk-QBLGF6JB-CRb_WAEj.js → chunk-QBLGF6JB-CsFeIGfr.js} +1 -1
  45. package/dist/assets/{chunk-R7FJI6CG-De6Y7ozO.js → chunk-R7FJI6CG-4xNYUeng.js} +1 -1
  46. package/dist/assets/{chunk-RYQCIY6F-Igv92q8k.js → chunk-RYQCIY6F-DJiHiTE5.js} +1 -1
  47. package/dist/assets/{chunk-U6XO7XAA-bCjRshkT.js → chunk-U6XO7XAA-BVYkauHz.js} +1 -1
  48. package/dist/assets/{chunk-V7JOEXUC-0J1s_Kgq.js → chunk-V7JOEXUC-BsazE8cS.js} +1 -1
  49. package/dist/assets/chunk-VAUOI2AC-BrbiIC1Q.js +1 -0
  50. package/dist/assets/{chunk-VR4S4FIN-DX6lXnNx.js → chunk-VR4S4FIN-7RoZQffO.js} +1 -1
  51. package/dist/assets/{chunk-WYO6CB5R-DLqMXfFC.js → chunk-WYO6CB5R-DEuS6N1R.js} +1 -1
  52. package/dist/assets/chunk-XXDRQBXY-Cx9N40wF.js +1 -0
  53. package/dist/assets/{chunk-YOTPTUD7-CY4obsV0.js → chunk-YOTPTUD7-9KBrosZL.js} +1 -1
  54. package/dist/assets/{chunk-ZGVPDNZ5-BleImZKe.js → chunk-ZGVPDNZ5-IYgN9f5A.js} +1 -1
  55. package/dist/assets/{chunk-ZIRB5QZD-C1TfdjpX.js → chunk-ZIRB5QZD-BUo0-zcp.js} +1 -1
  56. package/dist/assets/{circle-dashed-CEEssYIw.js → circle-dashed-LSYZTzM7.js} +1 -1
  57. package/dist/assets/classDiagram-OUVF2IWQ-DFN1v3PQ.js +1 -0
  58. package/dist/assets/classDiagram-v2-EOCWNBFH-DRvglADa.js +1 -0
  59. package/dist/assets/{client-C6YQx7A-.js → client-DudCRJw4.js} +1 -1
  60. package/dist/assets/{config-split-page-DKPelvjR.js → config-split-page-G7Kt2BnV.js} +1 -1
  61. package/dist/assets/confirm-dialog-DShT64F6.js +1 -0
  62. package/dist/assets/context-menu-rd7b_kVD.js +1 -0
  63. package/dist/assets/{cose-bilkent-JH36ORCC-CVgUHXkj.js → cose-bilkent-JH36ORCC-DhqbC1fR.js} +1 -1
  64. package/dist/assets/{createLucideIcon-CF8U9dh7.js → createLucideIcon-D7hvIHV-.js} +1 -1
  65. package/dist/assets/cynefin-VYW2F7L2-DXUGnpJH.js +1 -0
  66. package/dist/assets/{cynefinDiagram-TSTJHNR4-cdfImbfI.js → cynefinDiagram-TSTJHNR4-C-TBRi5V.js} +1 -1
  67. package/dist/assets/{dagre-CHNN9L9I.js → dagre-CrgsRasE.js} +1 -1
  68. package/dist/assets/{dagre-VKFMJZFB-PscaENwr.js → dagre-VKFMJZFB-BmafJymp.js} +1 -1
  69. package/dist/assets/{desktop-capabilities-page-BENHdKfk.js → desktop-capabilities-page-CzqzFZUY.js} +1 -1
  70. package/dist/assets/desktop-update-config-CgeQ0Ffo.js +1 -0
  71. package/dist/assets/{diagram-FQU43EPY-CH_wye41.js → diagram-FQU43EPY-BoOMwa6D.js} +1 -1
  72. package/dist/assets/{diagram-G47NLZAW-Dtjpmi6D.js → diagram-G47NLZAW-Le7N6Uym.js} +1 -1
  73. package/dist/assets/{diagram-NH7WQ7WH-UdjLHyaz.js → diagram-NH7WQ7WH-Fbpj3-MO.js} +1 -1
  74. package/dist/assets/{diagram-OA4YK3LP-DYsToEaL.js → diagram-OA4YK3LP-D3QuGGuu.js} +1 -1
  75. package/dist/assets/{diagram-WEI45ONY-CA7kuIer.js → diagram-WEI45ONY-Cxu1uiN6.js} +1 -1
  76. package/dist/assets/dialog-C7glmAQJ.js +5 -0
  77. package/dist/assets/{doc-browser-context-CPLWVFLd.js → doc-browser-context-BlhBAOLH.js} +1 -1
  78. package/dist/assets/doc-browser-dBiR9Qi0.js +1 -0
  79. package/dist/assets/{docx-preview-D--EsUWi.js → docx-preview-CkU2psnd.js} +1 -1
  80. package/dist/assets/download-BYgECE0n.js +1 -0
  81. package/dist/assets/{ebnfDiagram-CCIWWBDH-BrjaoOuq.js → ebnfDiagram-CCIWWBDH-CCAjuQM6.js} +1 -1
  82. package/dist/assets/{erDiagram-Q63AITRT-nZQa2kCM.js → erDiagram-Q63AITRT-BuzUAq-d.js} +1 -1
  83. package/dist/assets/es2015-CsjAAQ6X.js +41 -0
  84. package/dist/assets/eventmodeling-45OFAUF4-ZBfVS3ZC.js +1 -0
  85. package/dist/assets/{extensions-CsWT7x3v.js → extensions-qYL-NpL3.js} +1 -1
  86. package/dist/assets/{eye-DJtw5KJ5.js → eye-BBuTzJ53.js} +1 -1
  87. package/dist/assets/flowDiagram-23GEKE2U-CqdsKk6x.js +1 -0
  88. package/dist/assets/{form-actions-DDQk0END.js → form-actions-CLGWO52v.js} +1 -1
  89. package/dist/assets/{ganttDiagram-NO4QXBWP-CyFZHIHN.js → ganttDiagram-NO4QXBWP-cJmWVY8F.js} +1 -1
  90. package/dist/assets/gitGraph-TEB2WS4Q-fHYFd9Es.js +1 -0
  91. package/dist/assets/{gitGraphDiagram-IHSO6WYX-Dfpq3z2M.js → gitGraphDiagram-IHSO6WYX-F58o-vtP.js} +1 -1
  92. package/dist/assets/{i18n-BjPkAKMQ.js → i18n-qBGEbcW6.js} +2 -2
  93. package/dist/assets/info-DKCQHKI2-CSaOL_bb.js +1 -0
  94. package/dist/assets/{infoDiagram-FWYZ7A6U-Diiz0k1E.js → infoDiagram-FWYZ7A6U-Gt59b83C.js} +1 -1
  95. package/dist/assets/{ishikawaDiagram-FXEZZL3T-B3R3SN4M.js → ishikawaDiagram-FXEZZL3T-1u4IAj1I.js} +1 -1
  96. package/dist/assets/{journeyDiagram-5HDEW3XC-DFOLKiNv.js → journeyDiagram-5HDEW3XC-CCQsfV-5.js} +1 -1
  97. package/dist/assets/{kanban-definition-HUTT4EX6-BMXpDp3g.js → kanban-definition-HUTT4EX6-vlB6O_Zn.js} +1 -1
  98. package/dist/assets/{keyboard-shortcuts-settings-page-hqTP7akj.js → keyboard-shortcuts-settings-page-B-wK_6zG.js} +1 -1
  99. package/dist/assets/{line-64_FhCoJ.js → line-D_bHubTL.js} +1 -1
  100. package/dist/assets/{linear-aF1fg7bK.js → linear-ChlwuS5y.js} +1 -1
  101. package/dist/assets/loader-circle-BA7EMkih.js +1 -0
  102. package/dist/assets/{login-page-BUwshAq4.js → login-page-Cd84lpVV.js} +1 -1
  103. package/dist/assets/login-page-VdMyNkFf.js +1 -0
  104. package/dist/assets/main-CR0SrTBf.js +2 -0
  105. package/dist/assets/main-DXH6EdXI.css +1 -0
  106. package/dist/assets/main-i18n-catalog.config-Btp_OowF.js +1 -0
  107. package/dist/assets/{map-BC3Amra3.js → map-oGHTsIu8.js} +1 -1
  108. package/dist/assets/mcp-marketplace-page-jacRwiI-.js +1 -0
  109. package/dist/assets/{mermaid-parser.core-DdMcZwnE.js → mermaid-parser.core-CuRe1ZG4.js} +2 -2
  110. package/dist/assets/{mermaid.core-BHdiEBbI.js → mermaid.core-u4YCFKRf.js} +3 -3
  111. package/dist/assets/{mindmap-definition-LN4V7U3C-CtHVaZyV.js → mindmap-definition-LN4V7U3C-DeJAQYTu.js} +1 -1
  112. package/dist/assets/{model-config-page-BSsHOhV7.js → model-config-page-D0DQlSDa.js} +1 -1
  113. package/dist/assets/{navigation-link-D-fxdv0i.js → navigation-link-32iM1-e6.js} +1 -1
  114. package/dist/assets/{ordinal-6b3jw4cz.js → ordinal-C6JFfkKN.js} +1 -1
  115. package/dist/assets/packet-7NZHBO7P-D-YFTczs.js +1 -0
  116. package/dist/assets/panel-app-CC0bVSu4.js +1 -0
  117. package/dist/assets/panel-app-i18n-catalog.config-LUSBp5Ce.js +1 -0
  118. package/dist/assets/{panelStandalone-BeI0Ndsx.js → panelStandalone-C9EKaApN.js} +2 -2
  119. package/dist/assets/{pegDiagram-2B236MQR-BtbG3Bgu.js → pegDiagram-2B236MQR-nVMkxShH.js} +1 -1
  120. package/dist/assets/pie-RZYD4A2V-VEnYu9s5.js +1 -0
  121. package/dist/assets/{pieDiagram-ENE6RG2P-FmLl2hzN.js → pieDiagram-ENE6RG2P-8aUH44QZ.js} +1 -1
  122. package/dist/assets/{privacy-settings-page-pW_1naDz.js → privacy-settings-page-Bxxx12OO.js} +1 -1
  123. package/dist/assets/projects-D56yAPNT.js +1 -0
  124. package/dist/assets/provider-models-C3frdXeW.js +1 -0
  125. package/dist/assets/{provider-scoped-model-input-CVbtT8L9.js → provider-scoped-model-input-CYetrPYZ.js} +1 -1
  126. package/dist/assets/providers-config-page-DESB1h8g.js +1 -0
  127. package/dist/assets/{puzzle-kKiVft9-.js → puzzle-CWHfFyYN.js} +1 -1
  128. package/dist/assets/pwa-CiGUjpcd.js +1 -0
  129. package/dist/assets/{quadrantDiagram-ABIIQ3AL-7-OzMNpF.js → quadrantDiagram-ABIIQ3AL-EY8hpFv8.js} +1 -1
  130. package/dist/assets/radar-I7S5WNFK-BFNIekC1.js +1 -0
  131. package/dist/assets/railroad-3IZDKUUU-lVqJ3Hak.js +1 -0
  132. package/dist/assets/railroad-abnf-AHOZXSZD-DYaefdFC.js +1 -0
  133. package/dist/assets/railroad-ebnf-EBAXGLYW-CTAk6lVq.js +1 -0
  134. package/dist/assets/railroad-peg-LSFZ7HO6-Cob294tg.js +1 -0
  135. package/dist/assets/{railroadDiagram-RFXS5EU6-B_UVtLJO.js → railroadDiagram-RFXS5EU6-CNhcIeji.js} +1 -1
  136. package/dist/assets/{refresh-cw-BeG0y6yZ.js → refresh-cw-y3L6PyLt.js} +1 -1
  137. package/dist/assets/remote-DiGFV8nP.js +1 -0
  138. package/dist/assets/{requirementDiagram-TGXJPOKE-D8TO2YeZ.js → requirementDiagram-TGXJPOKE-D8Dcs-Rt.js} +1 -1
  139. package/dist/assets/{rotate-cw-Ci2dcTO5.js → rotate-cw-CNE9qSHi.js} +1 -1
  140. package/dist/assets/{runtime-config-page-DCXN0nkS.js → runtime-config-page-5o98T-TD.js} +1 -1
  141. package/dist/assets/{sankeyDiagram-HTMAVEWB-CUzIcq0B.js → sankeyDiagram-HTMAVEWB-HTrb6aa-.js} +1 -1
  142. package/dist/assets/{save-Cr895abt.js → save-B0p5a0ET.js} +1 -1
  143. package/dist/assets/{search-config-page-CNQd481d.js → search-config-page-CpGcnIzi.js} +1 -1
  144. package/dist/assets/{secrets-config-page--q7M58L8.js → secrets-config-page-C4VTiW3r.js} +1 -1
  145. package/dist/assets/security-config-C5-RQVpS.js +1 -0
  146. package/dist/assets/select-CctTN205.js +1 -0
  147. package/dist/assets/{sequenceDiagram-DBY2YBRQ-kqJzXbwu.js → sequenceDiagram-DBY2YBRQ-6f_4X16Y.js} +1 -1
  148. package/dist/assets/service-apps-panel-CKE5HKNY.js +1 -0
  149. package/dist/assets/{settings-2-IodCcaXd.js → settings-2-EPflrNk6.js} +1 -1
  150. package/dist/assets/{sizeCapture-X5ZJPWSS-D9ISogq1.js → sizeCapture-X5ZJPWSS-Ck9rsuwL.js} +1 -1
  151. package/dist/assets/{src-Bc0PoUJ1.js → src-C8AUg09O.js} +1 -1
  152. package/dist/assets/{stateDiagram-2N3HPSRC-CqH5xc9W.js → stateDiagram-2N3HPSRC-Cm33MLHu.js} +1 -1
  153. package/dist/assets/stateDiagram-v2-6OUMAXLB-BrNv-raG.js +1 -0
  154. package/dist/assets/{status-dot-DUYSKRCU.js → status-dot-CensgJZC.js} +1 -1
  155. package/dist/assets/{swimlanes-5IMT3BWC-mwejV-rW.js → swimlanes-5IMT3BWC-B107vmvM.js} +2 -2
  156. package/dist/assets/swimlanesDiagram-G3AALYLV-ntcxaPXp.js +8 -0
  157. package/dist/assets/{tag-chip-CQU51ST3.js → tag-chip-Bjzb4-qW.js} +1 -1
  158. package/dist/assets/{theme-provider-D-zZkXxS.js → theme-provider-hlle7Skk.js} +1 -1
  159. package/dist/assets/{timeline-definition-FHXFAJF6-CuikIDlX.js → timeline-definition-FHXFAJF6-CJEoAj33.js} +1 -1
  160. package/dist/assets/{trash-2-BDdqDh6E.js → trash-2-C5KH5Rw9.js} +1 -1
  161. package/dist/assets/treeView-QDETBFTQ-DbFmr-gw.js +1 -0
  162. package/dist/assets/treemap-6X3UGDF4-C8aY96pi.js +1 -0
  163. package/dist/assets/{use-config-Bxx7DdaL.js → use-config-CPl_F79t.js} +1 -1
  164. package/dist/assets/use-desktop-capabilities-CEg9-DrQ.js +1 -0
  165. package/dist/assets/{use-viewport-layout-CDcca0YL.js → use-viewport-layout-CPZUmTPi.js} +1 -1
  166. package/dist/assets/{vennDiagram-L72KCM5P-BD0P0qHh.js → vennDiagram-L72KCM5P-DzsUHk5I.js} +1 -1
  167. package/dist/assets/wardley-OPB4EBWU-D8d6DbbJ.js +1 -0
  168. package/dist/assets/{wardleyDiagram-EHGQE667-C6ma3t5D.js → wardleyDiagram-EHGQE667-1NfFs5ua.js} +1 -1
  169. package/dist/assets/x--xxUvHKW.js +1 -0
  170. package/dist/assets/{xychartDiagram-FW5EYKEG-D7E40NBk.js → xychartDiagram-FW5EYKEG-Ci8AI3Qo.js} +1 -1
  171. package/dist/index.html +37 -36
  172. package/dist/panel-standalone.html +11 -11
  173. package/package.json +8 -8
  174. package/src/app/components/layout/__tests__/app-layout.test.tsx +0 -1
  175. package/src/app/components/layout/__tests__/sidebar.layout.test.tsx +36 -16
  176. package/src/app/components/layout/sidebar-items.tsx +27 -18
  177. package/src/app/components/layout/sidebar-rail.styles.ts +11 -2
  178. package/src/app/components/layout/sidebar.tsx +3 -2
  179. package/src/app/configs/app-navigation.config.ts +39 -86
  180. package/src/features/agents/components/agent-details-dialog.tsx +3 -3
  181. package/src/features/agents/components/agents-page.tsx +5 -4
  182. package/src/features/chat/components/layout/__tests__/chat-page-shell.test.tsx +0 -2
  183. package/src/features/chat/components/layout/chat-page-shell.tsx +0 -2
  184. package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +0 -1
  185. package/src/features/chat/features/conversation/components/chat-voice-input-panel.tsx +3 -2
  186. package/src/features/chat/features/conversation/hooks/__tests__/use-chat-voice-input.test.tsx +4 -0
  187. package/src/features/chat/features/message/components/__tests__/chat-message-list.container.test.tsx +32 -47
  188. package/src/features/chat/features/message/components/chat-message-list.container.tsx +6 -10
  189. package/src/features/chat/features/message/utils/__tests__/chat-message-process-summary.utils.test.ts +52 -6
  190. package/src/features/chat/features/message/utils/chat-message-process-summary.utils.ts +22 -37
  191. package/src/features/chat/features/session/components/__tests__/chat-sidebar-project-groups.test.tsx +1 -1
  192. package/src/features/chat/features/session/components/__tests__/chat-sidebar-session-item.test.tsx +2 -1
  193. package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +4 -2
  194. package/src/features/chat/features/session/components/chat-sidebar-session-item.tsx +9 -6
  195. package/src/features/chat/features/session/components/session-header/__tests__/chat-session-header-actions.test.tsx +2 -2
  196. package/src/features/chat/features/session/components/session-header/chat-session-header-actions.tsx +17 -17
  197. package/src/features/chat/features/session/components/session-header/chat-session-header-menu-item.tsx +4 -4
  198. package/src/features/chat/features/session/components/session-header/chat-session-more-actions-menu.tsx +13 -6
  199. package/src/features/chat/features/workspace/components/chat-session-workspace-panel.tsx +1 -1
  200. package/src/features/chat/managers/chat-voice-input.manager.ts +5 -3
  201. package/src/features/chat/utils/chat-voice-permissions.utils.test.ts +12 -1
  202. package/src/features/chat/utils/chat-voice-permissions.utils.ts +6 -1
  203. package/src/features/cron/components/cron-job-row.tsx +11 -9
  204. package/src/features/inbox/components/inbox-reader-dialog.tsx +4 -2
  205. package/src/features/inbox/pages/inbox-page.tsx +10 -5
  206. package/src/features/marketplace/components/mcp/mcp-marketplace-card.tsx +1 -1
  207. package/src/features/panel-apps/components/__tests__/panel-app-list-item.test.tsx +6 -4
  208. package/src/features/panel-apps/components/__tests__/panel-app-toolbar.test.tsx +6 -4
  209. package/src/features/panel-apps/components/panel-app-list-item.tsx +1 -1
  210. package/src/features/panel-apps/components/panel-app-toolbar.tsx +7 -7
  211. package/src/features/projects/components/project-skills.tsx +2 -2
  212. package/src/features/right-panel-resources/components/__tests__/page-resource-sidebar-nav.test.tsx +27 -2
  213. package/src/features/right-panel-resources/components/page-resource-actions-menu.tsx +4 -22
  214. package/src/features/right-panel-resources/components/page-resource-sidebar-nav.tsx +10 -13
  215. package/src/features/right-panel-resources/hooks/use-page-resource-actions.ts +56 -3
  216. package/src/features/right-panel-resources/index.ts +0 -1
  217. package/src/features/service-apps/components/service-app-list-item.tsx +3 -2
  218. package/src/features/system-status/components/__tests__/desktop-update-config.test.tsx +40 -0
  219. package/src/features/system-status/components/desktop-update-config.tsx +19 -1
  220. package/src/platforms/desktop/components/__tests__/desktop-app-shell.test.tsx +0 -1
  221. package/src/platforms/desktop/components/desktop-app-shell.tsx +0 -2
  222. package/src/platforms/mobile/components/mobile-app-shell.tsx +0 -2
  223. package/src/platforms/mobile/components/mobile-settings-shell.tsx +8 -3
  224. package/src/shared/components/ui/context-menu/__tests__/context-menu.test.tsx +83 -1
  225. package/src/shared/components/ui/context-menu/context-menu-items.tsx +173 -0
  226. package/src/shared/components/ui/context-menu/context-menu.tsx +93 -114
  227. package/src/shared/components/ui/dialog.tsx +4 -0
  228. package/src/shared/components/ui/overlays/sheet.tsx +4 -0
  229. package/src/shared/components/ui/popover.tsx +10 -4
  230. package/src/shared/lib/i18n/locales/en-US/chat.json +8 -1
  231. package/src/shared/lib/i18n/locales/en-US/core.json +3 -1
  232. package/src/shared/lib/i18n/locales/en-US/desktop-update.json +1 -0
  233. package/src/shared/lib/i18n/locales/zh-CN/chat.json +8 -1
  234. package/src/shared/lib/i18n/locales/zh-CN/core.json +11 -9
  235. package/src/shared/lib/i18n/locales/zh-CN/desktop-update.json +1 -0
  236. package/src/shared/lib/transport/__tests__/browser-realtime-recovery.service.test.ts +27 -2
  237. package/src/shared/lib/transport/__tests__/local-transport.service.test.ts +20 -0
  238. package/src/shared/lib/transport/__tests__/remote.transport.test.ts +26 -0
  239. package/src/shared/lib/transport/browser-realtime-recovery.service.ts +32 -5
  240. package/src/shared/lib/transport/local-transport.service.ts +1 -6
  241. package/src/shared/lib/transport/remote-transport.service.ts +22 -1
  242. package/dist/assets/api-D9e9cHtW.js +0 -20
  243. package/dist/assets/app-presenter-provider-J9IgTbc9.js +0 -124
  244. package/dist/assets/architecture-TIHT7OUA-BWywYH_m.js +0 -1
  245. package/dist/assets/channel-1nKIAEXr.js +0 -1
  246. package/dist/assets/chunk-2Q5K7J3B-CAwv72v4.js +0 -1
  247. package/dist/assets/chunk-VAUOI2AC-DnaryNw2.js +0 -1
  248. package/dist/assets/chunk-XXDRQBXY-BToo1uqb.js +0 -1
  249. package/dist/assets/classDiagram-OUVF2IWQ-D_TusZGx.js +0 -1
  250. package/dist/assets/classDiagram-v2-EOCWNBFH-B1NFZTmS.js +0 -1
  251. package/dist/assets/confirm-dialog-BCGeh61X.js +0 -1
  252. package/dist/assets/cynefin-VYW2F7L2-CJZSs5s_.js +0 -1
  253. package/dist/assets/desktop-update-config-BJMTQMRS.js +0 -1
  254. package/dist/assets/dialog-DQXou6pg.js +0 -5
  255. package/dist/assets/dist-CiC9Fd9J.js +0 -1
  256. package/dist/assets/doc-browser-CCYS_csH.js +0 -1
  257. package/dist/assets/es2015-DHRpDU-q.js +0 -41
  258. package/dist/assets/eventmodeling-45OFAUF4-rc7kUq4V.js +0 -1
  259. package/dist/assets/flowDiagram-23GEKE2U-DAjaeGO8.js +0 -1
  260. package/dist/assets/gitGraph-TEB2WS4Q-Ce0gf6ps.js +0 -1
  261. package/dist/assets/info-DKCQHKI2-Cp-Tr78m.js +0 -1
  262. package/dist/assets/loader-circle-B-4WwzBj.js +0 -1
  263. package/dist/assets/login-page-CdlI6B8e.js +0 -1
  264. package/dist/assets/main-BVYdyT60.css +0 -1
  265. package/dist/assets/main-DYEALeoQ.js +0 -2
  266. package/dist/assets/main-i18n-catalog.config-1o2hjZ0m.js +0 -1
  267. package/dist/assets/mcp-marketplace-page-CRRQT6SP.js +0 -1
  268. package/dist/assets/packet-7NZHBO7P-BOJuCraS.js +0 -1
  269. package/dist/assets/panel-app-2EACRB8p.js +0 -1
  270. package/dist/assets/panel-app-i18n-catalog.config-kQO7QAwH.js +0 -1
  271. package/dist/assets/pie-RZYD4A2V-D-FEO81x.js +0 -1
  272. package/dist/assets/projects-k6SLda_A.js +0 -1
  273. package/dist/assets/provider-models-mVzuEQBS.js +0 -1
  274. package/dist/assets/providers-config-page-rBlVrHkb.js +0 -1
  275. package/dist/assets/pwa-BgGM4kkY.js +0 -1
  276. package/dist/assets/radar-I7S5WNFK-Bq3eK1vK.js +0 -1
  277. package/dist/assets/railroad-3IZDKUUU-C3uZ1esg.js +0 -1
  278. package/dist/assets/railroad-abnf-AHOZXSZD-D3iZd1KT.js +0 -1
  279. package/dist/assets/railroad-ebnf-EBAXGLYW-Dl0FWqZu.js +0 -1
  280. package/dist/assets/railroad-peg-LSFZ7HO6-B51SbzGp.js +0 -1
  281. package/dist/assets/remote-wYWqir2w.js +0 -1
  282. package/dist/assets/security-config-CJb2pK2O.js +0 -1
  283. package/dist/assets/select-Bq-UmfCK.js +0 -1
  284. package/dist/assets/service-apps-panel-iLLEByRF.js +0 -1
  285. package/dist/assets/stateDiagram-v2-6OUMAXLB-CcOGfDdx.js +0 -1
  286. package/dist/assets/swimlanesDiagram-G3AALYLV-BMI2k8RZ.js +0 -8
  287. package/dist/assets/treeView-QDETBFTQ-C0_07QI1.js +0 -1
  288. package/dist/assets/treemap-6X3UGDF4-Djpx6ccG.js +0 -1
  289. package/dist/assets/use-desktop-capabilities-BTgdFgJy.js +0 -1
  290. package/dist/assets/wardley-OPB4EBWU-DZVFxu81.js +0 -1
  291. package/dist/assets/x-LUUwl8rK.js +0 -1
  292. package/src/features/right-panel-resources/components/current-page-actions.tsx +0 -36
  293. /package/dist/assets/{array-B0sEvCP9.js → array-BV9OtnO8.js} +0 -0
  294. /package/dist/assets/{chunk-KEIR6QF5-BeO7fxDQ.js → chunk-KEIR6QF5-Cx-8EJ4_.js} +0 -0
  295. /package/dist/assets/{chunk-Y2CYZVJY-JQfgEV36.js → chunk-Y2CYZVJY-Dy1ufvjf.js} +0 -0
  296. /package/dist/assets/{config-hints-D3OuwoEY.js → config-hints-DbmiyTKg.js} +0 -0
  297. /package/dist/assets/{cytoscape.esm-CzJ9uXgi.js → cytoscape.esm-CSCjuT4Z.js} +0 -0
  298. /package/dist/assets/{defaultLocale-USmzX3VG.js → defaultLocale-DWTiNsbT.js} +0 -0
  299. /package/dist/assets/{dist-BYF6XVna.js → dist-BVCSkfWY.js} +0 -0
  300. /package/dist/assets/{graphlib-DEFMkHdW.js → graphlib-B1yb1Wl8.js} +0 -0
  301. /package/dist/assets/{host-capabilities-C0MmWd3M.js → host-capabilities-DuIFVsvM.js} +0 -0
  302. /package/dist/assets/{init-04ErALoz.js → init-BF6GH5oe.js} +0 -0
  303. /package/dist/assets/{jszip.min-BnQ5NRy2.js → jszip.min-D12teKzP.js} +0 -0
  304. /package/dist/assets/{middleware-CAXxl-af.js → middleware-B--6mAUM.js} +0 -0
  305. /package/dist/assets/{navigation-history-CyawyVz0.js → navigation-history-CzErJuPG.js} +0 -0
  306. /package/dist/assets/{path-CzxQ9n2G.js → path-C56XkznJ.js} +0 -0
  307. /package/dist/assets/{rough.esm-pT9fdsW3.js → rough.esm-CGfeEbtE.js} +0 -0
  308. /package/dist/assets/{xlsx-BRpCSiE4.js → xlsx-sds5nUpL.js} +0 -0
@@ -185,6 +185,7 @@ describe('RemoteSessionMultiplexTransport request path', () => {
185
185
  await pendingFailure;
186
186
  await Promise.resolve();
187
187
  expect(replacementSocket?.sent).toHaveLength(0);
188
+ vi.advanceTimersByTime(250);
188
189
  window.dispatchEvent(new Event('online'));
189
190
  const secondReplacement = MockWebSocket.instances[2];
190
191
  secondReplacement?.open();
@@ -197,4 +198,29 @@ describe('RemoteSessionMultiplexTransport request path', () => {
197
198
  expect(MockWebSocket.instances).toHaveLength(3);
198
199
  unsubscribe();
199
200
  });
201
+
202
+ it('abandons a frozen connecting socket immediately when the page is shown again', async () => {
203
+ vi.spyOn(document, 'visibilityState', 'get').mockReturnValue('visible');
204
+ const transport = new RemoteSessionMultiplexTransport({
205
+ mode: 'remote',
206
+ protocolVersion: 1,
207
+ wsPath: '/_remote/ws'
208
+ }, 'https://remote.claw.cool');
209
+
210
+ const handler = vi.fn();
211
+ const unsubscribe = transport.subscribe(handler);
212
+ const frozenSocket = MockWebSocket.instances[0];
213
+
214
+ window.dispatchEvent(new PageTransitionEvent('pageshow', { persisted: true }));
215
+ await Promise.resolve();
216
+
217
+ expect(frozenSocket?.readyState).toBe(MockWebSocket.CLOSED);
218
+ expect(MockWebSocket.instances).toHaveLength(2);
219
+ expect(handler).toHaveBeenCalledWith({ type: 'connection.close', payload: {} });
220
+
221
+ MockWebSocket.instances[1]?.open();
222
+ await Promise.resolve();
223
+ expect(handler).toHaveBeenLastCalledWith({ type: 'connection.open', payload: {} });
224
+ unsubscribe();
225
+ });
200
226
  });
@@ -1,5 +1,8 @@
1
+ const RECOVERY_SIGNAL_COOLDOWN_MS = 250;
2
+
1
3
  export class BrowserRealtimeRecoveryService {
2
4
  private started = false;
5
+ private recoveryCooldownId: number | null = null;
3
6
 
4
7
  constructor(private readonly requestRecovery: () => void) {}
5
8
 
@@ -10,6 +13,8 @@ export class BrowserRealtimeRecoveryService {
10
13
  this.started = true;
11
14
  document.addEventListener('visibilitychange', this.handleVisibilityChange);
12
15
  window.addEventListener('online', this.handleOnline);
16
+ window.addEventListener('pageshow', this.handlePageShow);
17
+ window.addEventListener('focus', this.handleForegroundSignal);
13
18
  };
14
19
 
15
20
  stop = (): void => {
@@ -19,17 +24,39 @@ export class BrowserRealtimeRecoveryService {
19
24
  this.started = false;
20
25
  document.removeEventListener('visibilitychange', this.handleVisibilityChange);
21
26
  window.removeEventListener('online', this.handleOnline);
27
+ window.removeEventListener('pageshow', this.handlePageShow);
28
+ window.removeEventListener('focus', this.handleForegroundSignal);
29
+ if (this.recoveryCooldownId !== null) {
30
+ window.clearTimeout(this.recoveryCooldownId);
31
+ this.recoveryCooldownId = null;
32
+ }
22
33
  };
23
34
 
24
35
  private readonly handleVisibilityChange = (): void => {
25
- if (document.visibilityState === 'visible') {
26
- this.requestRecovery();
27
- }
36
+ this.requestRecoveryIfVisible();
28
37
  };
29
38
 
30
39
  private readonly handleOnline = (): void => {
31
- if (document.visibilityState === 'visible') {
32
- this.requestRecovery();
40
+ this.requestRecoveryIfVisible();
41
+ };
42
+
43
+ private readonly handleForegroundSignal = (): void => {
44
+ this.requestRecoveryIfVisible();
45
+ };
46
+
47
+ private readonly handlePageShow = (event: PageTransitionEvent): void => {
48
+ if (event.persisted) {
49
+ this.requestRecoveryIfVisible();
50
+ }
51
+ };
52
+
53
+ private readonly requestRecoveryIfVisible = (): void => {
54
+ if (document.visibilityState !== 'visible' || this.recoveryCooldownId !== null) {
55
+ return;
33
56
  }
57
+ this.requestRecovery();
58
+ this.recoveryCooldownId = window.setTimeout(() => {
59
+ this.recoveryCooldownId = null;
60
+ }, RECOVERY_SIGNAL_COOLDOWN_MS);
34
61
  };
35
62
  }
@@ -54,7 +54,6 @@ class LocalRealtimeGateway {
54
54
  private socket: WebSocket | null = null;
55
55
  private reconnectTimer: number | null = null;
56
56
  private manualClose = false;
57
- private replacingAfterBrowserRecovery = false;
58
57
  private subscribers = new Set<EventHandler>();
59
58
  private readonly browserRecovery = new BrowserRealtimeRecoveryService(() => {
60
59
  this.replaceSocket();
@@ -95,7 +94,6 @@ class LocalRealtimeGateway {
95
94
  this.socket = socket;
96
95
 
97
96
  socket.onopen = () => {
98
- this.replacingAfterBrowserRecovery = false;
99
97
  this.emit({ type: 'connection.open', payload: {} });
100
98
  };
101
99
 
@@ -113,7 +111,6 @@ class LocalRealtimeGateway {
113
111
  };
114
112
 
115
113
  socket.onclose = () => {
116
- this.replacingAfterBrowserRecovery = false;
117
114
  this.emit({ type: 'connection.close', payload: {} });
118
115
  this.socket = null;
119
116
  if (!this.manualClose && this.subscribers.size > 0) {
@@ -133,10 +130,9 @@ class LocalRealtimeGateway {
133
130
  };
134
131
 
135
132
  private replaceSocket = (): void => {
136
- if (this.subscribers.size === 0 || this.replacingAfterBrowserRecovery) {
133
+ if (this.subscribers.size === 0) {
137
134
  return;
138
135
  }
139
- this.replacingAfterBrowserRecovery = true;
140
136
  if (this.reconnectTimer !== null) {
141
137
  window.clearTimeout(this.reconnectTimer);
142
138
  this.reconnectTimer = null;
@@ -156,7 +152,6 @@ class LocalRealtimeGateway {
156
152
 
157
153
  private disconnect = (): void => {
158
154
  this.manualClose = true;
159
- this.replacingAfterBrowserRecovery = false;
160
155
  if (this.reconnectTimer !== null) {
161
156
  window.clearTimeout(this.reconnectTimer);
162
157
  this.reconnectTimer = null;
@@ -87,9 +87,16 @@ function createId(prefix: string): string {
87
87
 
88
88
  const REMOTE_REQUEST_TIMEOUT_MS = 15_000;
89
89
 
90
+ class RemoteBrowserRecoveryReplacementError extends Error {
91
+ constructor() {
92
+ super('Remote transport connection replaced after browser recovery.');
93
+ }
94
+ }
95
+
90
96
  export class RemoteSessionMultiplexTransport implements AppTransport {
91
97
  private socket: WebSocket | null = null;
92
98
  private connectPromise: Promise<void> | null = null;
99
+ private rejectConnect: ((error: Error) => void) | null = null;
93
100
  private connectTimeoutId: number | null = null;
94
101
  private reconnectTimer: number | null = null;
95
102
  private manualClose = false;
@@ -221,6 +228,9 @@ export class RemoteSessionMultiplexTransport implements AppTransport {
221
228
  this.subscribers.add(handler);
222
229
  this.browserRecovery.start();
223
230
  void this.ensureSocket().catch((error) => {
231
+ if (error instanceof RemoteBrowserRecoveryReplacementError) {
232
+ return;
233
+ }
224
234
  handler({
225
235
  type: 'connection.error',
226
236
  payload: { message: error instanceof Error ? error.message : String(error) }
@@ -258,6 +268,7 @@ export class RemoteSessionMultiplexTransport implements AppTransport {
258
268
  const wsUrl = resolveTransportWebSocketUrl(this.apiBase, this.runtime.wsPath);
259
269
  this.manualClose = false;
260
270
  this.connectPromise = new Promise<void>((innerResolve, innerReject) => {
271
+ this.rejectConnect = innerReject;
261
272
  const socket = new WebSocket(wsUrl);
262
273
  this.socket = socket;
263
274
  let connectionOpened = false;
@@ -279,6 +290,7 @@ export class RemoteSessionMultiplexTransport implements AppTransport {
279
290
  connectionOpened = true;
280
291
  clearConnectTimeout();
281
292
  this.connectPromise = null;
293
+ this.rejectConnect = null;
282
294
  innerResolve();
283
295
  this.emit({ type: 'connection.open', payload: {} });
284
296
  };
@@ -304,6 +316,7 @@ export class RemoteSessionMultiplexTransport implements AppTransport {
304
316
  const wasConnecting = this.connectPromise !== null;
305
317
  this.socket = null;
306
318
  this.connectPromise = null;
319
+ this.rejectConnect = null;
307
320
  this.failPendingWork(new Error('Remote transport connection closed.'));
308
321
  this.emit({ type: 'connection.close', payload: {} });
309
322
  if (wasConnecting && !connectionOpened) {
@@ -330,21 +343,29 @@ export class RemoteSessionMultiplexTransport implements AppTransport {
330
343
  }
331
344
 
332
345
  private replaceSocket = (): void => {
333
- if (this.subscribers.size === 0 || this.connectPromise !== null) {
346
+ if (this.subscribers.size === 0) {
334
347
  return;
335
348
  }
336
349
  if (this.reconnectTimer !== null) {
337
350
  window.clearTimeout(this.reconnectTimer);
338
351
  this.reconnectTimer = null;
339
352
  }
353
+ if (this.connectTimeoutId !== null) {
354
+ window.clearTimeout(this.connectTimeoutId);
355
+ this.connectTimeoutId = null;
356
+ }
340
357
  const staleSocket = this.socket;
358
+ const rejectStaleConnect = this.rejectConnect;
341
359
  this.socket = null;
360
+ this.connectPromise = null;
361
+ this.rejectConnect = null;
342
362
  if (staleSocket) {
343
363
  staleSocket.onopen = null;
344
364
  staleSocket.onmessage = null;
345
365
  staleSocket.onerror = null;
346
366
  staleSocket.onclose = null;
347
367
  staleSocket.close();
368
+ rejectStaleConnect?.(new RemoteBrowserRecoveryReplacementError());
348
369
  this.failPendingWork(new Error('Remote transport connection replaced after browser recovery.'));
349
370
  this.emit({ type: 'connection.close', payload: {} });
350
371
  }