@peers-app/peers-ui 0.14.0 → 0.15.0

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 (438) hide show
  1. package/.github/workflows/publish.yml +8 -5
  2. package/babel.config.js +4 -4
  3. package/biome.json +191 -0
  4. package/dist/command-palette/command-palette-ui.d.ts +1 -2
  5. package/dist/command-palette/command-palette-ui.js +175 -244
  6. package/dist/command-palette/command-palette.js +65 -64
  7. package/dist/components/chat-overlay.d.ts +2 -2
  8. package/dist/components/chat-overlay.js +160 -217
  9. package/dist/components/checkbox.d.ts +5 -4
  10. package/dist/components/checkbox.js +4 -7
  11. package/dist/components/group-switcher.d.ts +1 -2
  12. package/dist/components/group-switcher.js +119 -159
  13. package/dist/components/input-date.d.ts +3 -3
  14. package/dist/components/input-date.js +6 -6
  15. package/dist/components/input-number.d.ts +7 -6
  16. package/dist/components/input-number.js +25 -20
  17. package/dist/components/input.d.ts +5 -4
  18. package/dist/components/input.js +4 -7
  19. package/dist/components/inverse-lazy-list.d.ts +3 -3
  20. package/dist/components/inverse-lazy-list.js +13 -47
  21. package/dist/components/io-schema-values.d.ts +5 -6
  22. package/dist/components/io-schema-values.js +28 -65
  23. package/dist/components/io-schema.d.ts +4 -5
  24. package/dist/components/io-schema.js +42 -79
  25. package/dist/components/lazy-list.d.ts +3 -3
  26. package/dist/components/lazy-list.js +38 -58
  27. package/dist/components/list-screen.d.ts +3 -8
  28. package/dist/components/list-screen.js +28 -23
  29. package/dist/components/loading-indicator.d.ts +1 -2
  30. package/dist/components/loading-indicator.js +2 -6
  31. package/dist/components/markdown-editor/autolink-plugin.js +5 -8
  32. package/dist/components/markdown-editor/editor-inline.d.ts +2 -3
  33. package/dist/components/markdown-editor/editor-inline.js +2 -6
  34. package/dist/components/markdown-editor/editor.d.ts +6 -6
  35. package/dist/components/markdown-editor/editor.js +9 -19
  36. package/dist/components/markdown-editor/markdown-plugin.d.ts +1 -1
  37. package/dist/components/markdown-editor/markdown-plugin.js +20 -21
  38. package/dist/components/markdown-editor/mention-node.d.ts +2 -2
  39. package/dist/components/markdown-editor/mention-node.js +24 -24
  40. package/dist/components/markdown-editor/mentions-plugin.d.ts +2 -2
  41. package/dist/components/markdown-editor/mentions-plugin.js +61 -62
  42. package/dist/components/markdown-editor/theme.js +28 -28
  43. package/dist/components/markdown-editor/toolbar.d.ts +2 -3
  44. package/dist/components/markdown-editor/toolbar.js +32 -49
  45. package/dist/components/markdown-with-mentions.d.ts +1 -1
  46. package/dist/components/markdown-with-mentions.js +43 -43
  47. package/dist/components/message-logs/message-logs.d.ts +1 -2
  48. package/dist/components/message-logs/message-logs.js +91 -116
  49. package/dist/components/messages/avatar.d.ts +3 -4
  50. package/dist/components/messages/avatar.js +37 -46
  51. package/dist/components/messages/channel-message-list.d.ts +5 -6
  52. package/dist/components/messages/channel-message-list.js +34 -34
  53. package/dist/components/messages/channel-view.d.ts +1 -2
  54. package/dist/components/messages/channel-view.js +23 -57
  55. package/dist/components/messages/message-compose.d.ts +3 -4
  56. package/dist/components/messages/message-compose.js +27 -38
  57. package/dist/components/messages/message-display.d.ts +2 -3
  58. package/dist/components/messages/message-display.js +42 -95
  59. package/dist/components/messages/thread-message-list.d.ts +4 -5
  60. package/dist/components/messages/thread-message-list.js +29 -29
  61. package/dist/components/router.d.ts +1 -2
  62. package/dist/components/router.js +58 -66
  63. package/dist/components/save-button.d.ts +3 -3
  64. package/dist/components/save-button.js +23 -33
  65. package/dist/components/sortable-list.d.ts +11 -12
  66. package/dist/components/sortable-list.js +42 -22
  67. package/dist/components/tabs.d.ts +3 -3
  68. package/dist/components/tabs.js +16 -47
  69. package/dist/components/tooltip.d.ts +4 -4
  70. package/dist/components/tooltip.js +4 -9
  71. package/dist/components/trust-level-badge.d.ts +2 -3
  72. package/dist/components/trust-level-badge.js +16 -16
  73. package/dist/components/trust-level-dropdown.d.ts +3 -4
  74. package/dist/components/trust-level-dropdown.js +32 -55
  75. package/dist/components/typeahead.d.ts +3 -3
  76. package/dist/components/typeahead.js +48 -89
  77. package/dist/components/voice-indicator.d.ts +2 -2
  78. package/dist/components/voice-indicator.js +93 -106
  79. package/dist/components/voice-subscribe-events.d.ts +32 -0
  80. package/dist/components/voice-subscribe-events.js +2 -0
  81. package/dist/globals.d.ts +3 -5
  82. package/dist/globals.js +22 -33
  83. package/dist/hooks.d.ts +5 -5
  84. package/dist/hooks.js +22 -12
  85. package/dist/hooks.test.js +129 -145
  86. package/dist/index.d.ts +9 -8
  87. package/dist/index.js +13 -12
  88. package/dist/mention-configs.d.ts +2 -2
  89. package/dist/mention-configs.js +55 -42
  90. package/dist/screens/assistants/assistant-config.d.ts +2 -3
  91. package/dist/screens/assistants/assistant-config.js +9 -22
  92. package/dist/screens/assistants/assistant-details.d.ts +1 -2
  93. package/dist/screens/assistants/assistant-details.js +13 -28
  94. package/dist/screens/assistants/assistant-info.d.ts +2 -3
  95. package/dist/screens/assistants/assistant-info.js +3 -17
  96. package/dist/screens/assistants/assistant-list.d.ts +1 -2
  97. package/dist/screens/assistants/assistant-list.js +15 -56
  98. package/dist/screens/assistants/assistant-tools.d.ts +2 -3
  99. package/dist/screens/assistants/assistant-tools.js +10 -24
  100. package/dist/screens/console-logs/console-logs-list.d.ts +1 -2
  101. package/dist/screens/console-logs/console-logs-list.js +130 -134
  102. package/dist/screens/console-logs/log-display.d.ts +2 -3
  103. package/dist/screens/console-logs/log-display.js +40 -42
  104. package/dist/screens/console-logs/log-filters.d.ts +1 -2
  105. package/dist/screens/console-logs/log-filters.js +2 -24
  106. package/dist/screens/console-logs/mobile-log-card.d.ts +2 -3
  107. package/dist/screens/console-logs/mobile-log-card.js +64 -67
  108. package/dist/screens/console-logs/resizable-table-header.d.ts +1 -2
  109. package/dist/screens/console-logs/resizable-table-header.js +31 -67
  110. package/dist/screens/contacts/contact-details.d.ts +1 -2
  111. package/dist/screens/contacts/contact-details.js +16 -46
  112. package/dist/screens/contacts/contact-list.d.ts +1 -2
  113. package/dist/screens/contacts/contact-list.js +44 -103
  114. package/dist/screens/contacts/index.d.ts +4 -4
  115. package/dist/screens/contacts/index.js +1 -1
  116. package/dist/screens/contacts/user-connect.d.ts +1 -2
  117. package/dist/screens/contacts/user-connect.js +85 -186
  118. package/dist/screens/data-explorer/data-explorer.d.ts +1 -2
  119. package/dist/screens/data-explorer/data-explorer.js +61 -181
  120. package/dist/screens/data-explorer/index.d.ts +2 -2
  121. package/dist/screens/data-explorer/query-executor.d.ts +1 -2
  122. package/dist/screens/data-explorer/query-executor.js +56 -166
  123. package/dist/screens/groups/group-details.d.ts +1 -2
  124. package/dist/screens/groups/group-details.js +27 -122
  125. package/dist/screens/groups/group-invite-listener.d.ts +2 -3
  126. package/dist/screens/groups/group-invite-listener.js +8 -104
  127. package/dist/screens/groups/group-list.d.ts +1 -2
  128. package/dist/screens/groups/group-list.js +56 -133
  129. package/dist/screens/groups/group-members.d.ts +2 -3
  130. package/dist/screens/groups/group-members.js +62 -132
  131. package/dist/screens/groups/index.d.ts +4 -4
  132. package/dist/screens/groups/index.js +1 -1
  133. package/dist/screens/join-group/index.d.ts +2 -2
  134. package/dist/screens/join-group/join-group.d.ts +1 -2
  135. package/dist/screens/join-group/join-group.js +9 -109
  136. package/dist/screens/network-viewer/connection-troubleshooter.d.ts +2 -3
  137. package/dist/screens/network-viewer/connection-troubleshooter.js +89 -193
  138. package/dist/screens/network-viewer/cpu-usage-graph.d.ts +1 -2
  139. package/dist/screens/network-viewer/cpu-usage-graph.js +60 -99
  140. package/dist/screens/network-viewer/device-details-modal.d.ts +1 -2
  141. package/dist/screens/network-viewer/device-details-modal.js +25 -177
  142. package/dist/screens/network-viewer/group-details-modal.d.ts +1 -2
  143. package/dist/screens/network-viewer/group-details-modal.js +31 -142
  144. package/dist/screens/network-viewer/index.d.ts +4 -4
  145. package/dist/screens/network-viewer/index.js +3 -3
  146. package/dist/screens/network-viewer/network-viewer-ipc.d.ts +22 -0
  147. package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
  148. package/dist/screens/network-viewer/network-viewer.d.ts +1 -2
  149. package/dist/screens/network-viewer/network-viewer.js +91 -296
  150. package/dist/screens/network-viewer/usage-graph.d.ts +1 -2
  151. package/dist/screens/network-viewer/usage-graph.js +78 -110
  152. package/dist/screens/packages/package-details.d.ts +1 -2
  153. package/dist/screens/packages/package-details.js +35 -41
  154. package/dist/screens/packages/package-info.d.ts +2 -2
  155. package/dist/screens/packages/package-info.js +33 -86
  156. package/dist/screens/packages/package-list.d.ts +1 -2
  157. package/dist/screens/packages/package-list.js +42 -106
  158. package/dist/screens/packages/package-new-local.d.ts +1 -2
  159. package/dist/screens/packages/package-new-local.js +13 -19
  160. package/dist/screens/packages/package-versions.d.ts +2 -3
  161. package/dist/screens/packages/package-versions.js +29 -96
  162. package/dist/screens/peer-types/peer-type-details.d.ts +3 -4
  163. package/dist/screens/peer-types/peer-type-details.js +26 -78
  164. package/dist/screens/peer-types/peer-type-list.d.ts +1 -2
  165. package/dist/screens/peer-types/peer-type-list.js +13 -24
  166. package/dist/screens/search/global-search.d.ts +1 -2
  167. package/dist/screens/search/global-search.js +104 -182
  168. package/dist/screens/settings/color-mode-dropdown.d.ts +3 -4
  169. package/dist/screens/settings/color-mode-dropdown.js +18 -37
  170. package/dist/screens/settings/settings-page.d.ts +1 -1
  171. package/dist/screens/settings/settings-page.js +86 -213
  172. package/dist/screens/settings/voice-settings-agent.d.ts +1 -1
  173. package/dist/screens/settings/voice-settings-agent.js +7 -44
  174. package/dist/screens/settings/voice-settings-api-keys.d.ts +2 -2
  175. package/dist/screens/settings/voice-settings-api-keys.js +2 -29
  176. package/dist/screens/settings/voice-settings-output.d.ts +2 -2
  177. package/dist/screens/settings/voice-settings-output.js +2 -40
  178. package/dist/screens/settings/voice-settings-providers.d.ts +2 -2
  179. package/dist/screens/settings/voice-settings-providers.js +2 -19
  180. package/dist/screens/settings/voice-settings-types.d.ts +4 -4
  181. package/dist/screens/settings/voice-settings-types.js +31 -31
  182. package/dist/screens/settings/voice-settings-wake-word.d.ts +2 -2
  183. package/dist/screens/settings/voice-settings-wake-word.js +2 -33
  184. package/dist/screens/settings/voice-settings.d.ts +1 -1
  185. package/dist/screens/settings/voice-settings.js +35 -112
  186. package/dist/screens/setup-user.d.ts +1 -2
  187. package/dist/screens/setup-user.js +38 -116
  188. package/dist/screens/tools/tool-code.d.ts +2 -3
  189. package/dist/screens/tools/tool-code.js +9 -13
  190. package/dist/screens/tools/tool-details.d.ts +1 -2
  191. package/dist/screens/tools/tool-details.js +26 -39
  192. package/dist/screens/tools/tool-info.d.ts +2 -3
  193. package/dist/screens/tools/tool-info.js +9 -48
  194. package/dist/screens/tools/tool-list.d.ts +1 -2
  195. package/dist/screens/tools/tool-list.js +33 -65
  196. package/dist/screens/tools/tool-schema.d.ts +2 -3
  197. package/dist/screens/tools/tool-schema.js +2 -13
  198. package/dist/screens/tools/tool-test-details.d.ts +1 -2
  199. package/dist/screens/tools/tool-test-details.js +12 -28
  200. package/dist/screens/tools/tool-test-list.d.ts +1 -2
  201. package/dist/screens/tools/tool-test-list.js +17 -56
  202. package/dist/screens/variables/variable-details.d.ts +1 -2
  203. package/dist/screens/variables/variable-details.js +19 -86
  204. package/dist/screens/variables/variable-list.d.ts +1 -2
  205. package/dist/screens/variables/variable-list.js +16 -27
  206. package/dist/screens/welcome-modal.d.ts +1 -2
  207. package/dist/screens/welcome-modal.js +44 -111
  208. package/dist/screens/workflows/workflow-details.d.ts +1 -2
  209. package/dist/screens/workflows/workflow-details.js +17 -31
  210. package/dist/screens/workflows/workflow-info.d.ts +2 -3
  211. package/dist/screens/workflows/workflow-info.js +2 -9
  212. package/dist/screens/workflows/workflow-instructions.d.ts +2 -3
  213. package/dist/screens/workflows/workflow-instructions.js +23 -55
  214. package/dist/screens/workflows/workflow-list.d.ts +1 -2
  215. package/dist/screens/workflows/workflow-list.js +23 -62
  216. package/dist/setupTests.d.ts +1 -1
  217. package/dist/setupTests.js +10 -11
  218. package/dist/system-apps/assistants.app.d.ts +1 -1
  219. package/dist/system-apps/assistants.app.js +3 -3
  220. package/dist/system-apps/console-logs.app.d.ts +1 -1
  221. package/dist/system-apps/console-logs.app.js +3 -3
  222. package/dist/system-apps/contacts.app.d.ts +1 -1
  223. package/dist/system-apps/contacts.app.js +4 -4
  224. package/dist/system-apps/data-explorer.app.d.ts +1 -1
  225. package/dist/system-apps/data-explorer.app.js +4 -4
  226. package/dist/system-apps/groups.app.d.ts +1 -1
  227. package/dist/system-apps/groups.app.js +4 -4
  228. package/dist/system-apps/index.d.ts +17 -17
  229. package/dist/system-apps/index.js +52 -52
  230. package/dist/system-apps/join-group.app.d.ts +1 -1
  231. package/dist/system-apps/join-group.app.js +4 -4
  232. package/dist/system-apps/mobile-settings.app.d.ts +1 -1
  233. package/dist/system-apps/mobile-settings.app.js +3 -3
  234. package/dist/system-apps/network-viewer.app.d.ts +1 -1
  235. package/dist/system-apps/network-viewer.app.js +4 -4
  236. package/dist/system-apps/packages.app.d.ts +1 -1
  237. package/dist/system-apps/packages.app.js +3 -3
  238. package/dist/system-apps/search.app.d.ts +1 -1
  239. package/dist/system-apps/search.app.js +4 -4
  240. package/dist/system-apps/settings.app.d.ts +1 -1
  241. package/dist/system-apps/settings.app.js +3 -3
  242. package/dist/system-apps/threads.app.d.ts +1 -1
  243. package/dist/system-apps/threads.app.js +3 -3
  244. package/dist/system-apps/tools.app.d.ts +1 -1
  245. package/dist/system-apps/tools.app.js +3 -3
  246. package/dist/system-apps/types.app.d.ts +1 -1
  247. package/dist/system-apps/types.app.js +3 -3
  248. package/dist/system-apps/variables.app.d.ts +1 -1
  249. package/dist/system-apps/variables.app.js +3 -3
  250. package/dist/system-apps/workflows.app.d.ts +1 -1
  251. package/dist/system-apps/workflows.app.js +3 -3
  252. package/dist/tabs-layout/tabs-layout.d.ts +2 -3
  253. package/dist/tabs-layout/tabs-layout.js +215 -246
  254. package/dist/tabs-layout/tabs-state.d.ts +2 -2
  255. package/dist/tabs-layout/tabs-state.js +73 -61
  256. package/dist/ui-defaults/index.d.ts +2 -2
  257. package/dist/ui-defaults/list-screen.d.ts +2 -3
  258. package/dist/ui-defaults/list-screen.js +33 -37
  259. package/dist/ui-defaults/markdown-field.js +24 -56
  260. package/dist/ui-router/routes-loader.d.ts +1 -1
  261. package/dist/ui-router/routes-loader.js +17 -13
  262. package/dist/ui-router/ui-loader.d.ts +6 -6
  263. package/dist/ui-router/ui-loader.js +172 -268
  264. package/dist/utils.js +49 -39
  265. package/jest.config.js +16 -16
  266. package/package.json +16 -14
  267. package/src/command-palette/command-palette-ui.tsx +261 -237
  268. package/src/command-palette/command-palette.ts +81 -78
  269. package/src/components/chat-overlay.tsx +366 -261
  270. package/src/components/checkbox.tsx +15 -12
  271. package/src/components/group-switcher.tsx +150 -105
  272. package/src/components/input-date.tsx +17 -16
  273. package/src/components/input-number.tsx +47 -31
  274. package/src/components/input.tsx +15 -12
  275. package/src/components/inverse-lazy-list.tsx +14 -13
  276. package/src/components/io-schema-values.tsx +51 -69
  277. package/src/components/io-schema.tsx +94 -69
  278. package/src/components/lazy-list.tsx +51 -34
  279. package/src/components/list-screen.tsx +51 -35
  280. package/src/components/loading-indicator.tsx +2 -4
  281. package/src/components/markdown-editor/autolink-plugin.tsx +4 -11
  282. package/src/components/markdown-editor/editor-inline.tsx +3 -4
  283. package/src/components/markdown-editor/editor.tsx +53 -51
  284. package/src/components/markdown-editor/markdown-plugin.tsx +48 -40
  285. package/src/components/markdown-editor/mention-node.ts +39 -38
  286. package/src/components/markdown-editor/mentions-plugin.tsx +99 -101
  287. package/src/components/markdown-editor/theme.ts +28 -29
  288. package/src/components/markdown-editor/toolbar.tsx +53 -47
  289. package/src/components/markdown-with-mentions.tsx +56 -46
  290. package/src/components/message-logs/message-logs.tsx +225 -165
  291. package/src/components/messages/avatar.tsx +70 -52
  292. package/src/components/messages/channel-message-list.tsx +80 -68
  293. package/src/components/messages/channel-view.tsx +34 -33
  294. package/src/components/messages/message-compose.tsx +84 -67
  295. package/src/components/messages/message-display.tsx +103 -89
  296. package/src/components/messages/thread-message-list.tsx +53 -44
  297. package/src/components/router.tsx +42 -43
  298. package/src/components/save-button.tsx +43 -39
  299. package/src/components/sortable-list.tsx +77 -49
  300. package/src/components/tabs.tsx +31 -31
  301. package/src/components/tooltip.tsx +21 -28
  302. package/src/components/trust-level-badge.tsx +15 -11
  303. package/src/components/trust-level-dropdown.tsx +49 -19
  304. package/src/components/typeahead.tsx +57 -59
  305. package/src/components/voice-indicator.tsx +158 -141
  306. package/src/components/voice-subscribe-events.ts +20 -0
  307. package/src/globals.tsx +42 -40
  308. package/src/hooks.test.tsx +141 -134
  309. package/src/hooks.ts +80 -48
  310. package/src/index.tsx +17 -10
  311. package/src/mention-configs.ts +122 -68
  312. package/src/screens/assistants/assistant-config.tsx +28 -18
  313. package/src/screens/assistants/assistant-details.tsx +35 -36
  314. package/src/screens/assistants/assistant-info.tsx +16 -11
  315. package/src/screens/assistants/assistant-list.tsx +37 -34
  316. package/src/screens/assistants/assistant-tools.tsx +41 -20
  317. package/src/screens/console-logs/console-logs-list.tsx +173 -140
  318. package/src/screens/console-logs/log-display.tsx +65 -38
  319. package/src/screens/console-logs/log-filters.tsx +4 -3
  320. package/src/screens/console-logs/mobile-log-card.tsx +78 -71
  321. package/src/screens/console-logs/resizable-table-header.tsx +29 -21
  322. package/src/screens/contacts/contact-details.tsx +29 -30
  323. package/src/screens/contacts/contact-list.tsx +71 -60
  324. package/src/screens/contacts/index.ts +5 -5
  325. package/src/screens/contacts/user-connect.tsx +177 -171
  326. package/src/screens/data-explorer/data-explorer.tsx +134 -98
  327. package/src/screens/data-explorer/index.ts +2 -3
  328. package/src/screens/data-explorer/query-executor.tsx +90 -80
  329. package/src/screens/groups/group-details.tsx +120 -101
  330. package/src/screens/groups/group-invite-listener.tsx +34 -37
  331. package/src/screens/groups/group-list.tsx +119 -103
  332. package/src/screens/groups/group-members.tsx +225 -164
  333. package/src/screens/groups/index.ts +5 -6
  334. package/src/screens/join-group/index.ts +2 -2
  335. package/src/screens/join-group/join-group.tsx +41 -39
  336. package/src/screens/network-viewer/connection-troubleshooter.tsx +145 -104
  337. package/src/screens/network-viewer/cpu-usage-graph.tsx +39 -43
  338. package/src/screens/network-viewer/device-details-modal.tsx +46 -59
  339. package/src/screens/network-viewer/group-details-modal.tsx +68 -49
  340. package/src/screens/network-viewer/index.ts +4 -5
  341. package/src/screens/network-viewer/network-viewer-ipc.ts +23 -0
  342. package/src/screens/network-viewer/network-viewer.tsx +261 -236
  343. package/src/screens/network-viewer/usage-graph.tsx +57 -49
  344. package/src/screens/packages/package-details.tsx +43 -35
  345. package/src/screens/packages/package-info.tsx +107 -66
  346. package/src/screens/packages/package-list.tsx +175 -98
  347. package/src/screens/packages/package-new-local.tsx +28 -26
  348. package/src/screens/packages/package-versions.tsx +102 -77
  349. package/src/screens/peer-types/peer-type-details.tsx +60 -50
  350. package/src/screens/peer-types/peer-type-list.tsx +20 -30
  351. package/src/screens/search/global-search.tsx +153 -137
  352. package/src/screens/settings/color-mode-dropdown.tsx +52 -35
  353. package/src/screens/settings/settings-page.tsx +215 -141
  354. package/src/screens/settings/voice-settings-agent.tsx +13 -12
  355. package/src/screens/settings/voice-settings-api-keys.tsx +14 -12
  356. package/src/screens/settings/voice-settings-output.tsx +12 -11
  357. package/src/screens/settings/voice-settings-providers.tsx +7 -3
  358. package/src/screens/settings/voice-settings-types.ts +52 -49
  359. package/src/screens/settings/voice-settings-wake-word.tsx +25 -9
  360. package/src/screens/settings/voice-settings.tsx +66 -43
  361. package/src/screens/setup-user.tsx +88 -41
  362. package/src/screens/tools/tool-code.tsx +12 -17
  363. package/src/screens/tools/tool-details.tsx +28 -28
  364. package/src/screens/tools/tool-info.tsx +14 -19
  365. package/src/screens/tools/tool-list.tsx +58 -40
  366. package/src/screens/tools/tool-schema.tsx +16 -9
  367. package/src/screens/tools/tool-test-details.tsx +11 -22
  368. package/src/screens/tools/tool-test-list.tsx +29 -30
  369. package/src/screens/variables/variable-details.tsx +63 -51
  370. package/src/screens/variables/variable-list.tsx +29 -30
  371. package/src/screens/welcome-modal.tsx +68 -48
  372. package/src/screens/workflows/workflow-details.tsx +40 -30
  373. package/src/screens/workflows/workflow-info.tsx +4 -11
  374. package/src/screens/workflows/workflow-instructions.tsx +35 -28
  375. package/src/screens/workflows/workflow-list.tsx +50 -40
  376. package/src/setupTests.ts +14 -13
  377. package/src/system-apps/assistants.app.ts +5 -5
  378. package/src/system-apps/console-logs.app.ts +4 -4
  379. package/src/system-apps/contacts.app.ts +6 -6
  380. package/src/system-apps/data-explorer.app.ts +5 -5
  381. package/src/system-apps/groups.app.ts +6 -6
  382. package/src/system-apps/index.ts +49 -49
  383. package/src/system-apps/join-group.app.ts +5 -5
  384. package/src/system-apps/mobile-settings.app.ts +4 -5
  385. package/src/system-apps/network-viewer.app.ts +5 -5
  386. package/src/system-apps/packages.app.ts +5 -5
  387. package/src/system-apps/search.app.ts +6 -6
  388. package/src/system-apps/settings.app.ts +5 -5
  389. package/src/system-apps/threads.app.ts +5 -5
  390. package/src/system-apps/tools.app.ts +5 -5
  391. package/src/system-apps/types.app.ts +5 -5
  392. package/src/system-apps/variables.app.ts +5 -5
  393. package/src/system-apps/workflows.app.ts +5 -5
  394. package/src/tabs-layout/tabs-layout.tsx +345 -254
  395. package/src/tabs-layout/tabs-state.ts +100 -81
  396. package/src/ui-defaults/index.ts +2 -3
  397. package/src/ui-defaults/list-screen.tsx +45 -40
  398. package/src/ui-defaults/markdown-field.tsx +22 -26
  399. package/src/ui-router/routes-loader.ts +40 -24
  400. package/src/ui-router/ui-loader.tsx +312 -214
  401. package/src/utils.ts +68 -81
  402. package/tsconfig.json +5 -10
  403. package/dist/components/input-datetime.d.ts +0 -7
  404. package/dist/components/input-datetime.js +0 -35
  405. package/dist/components/lazy-sortable-list.d.ts +0 -29
  406. package/dist/components/lazy-sortable-list.js +0 -12
  407. package/dist/components/left-bar.d.ts +0 -5
  408. package/dist/components/left-bar.js +0 -207
  409. package/dist/components/main-content-container.d.ts +0 -2
  410. package/dist/components/main-content-container.js +0 -92
  411. package/dist/components/messages/thread-view.d.ts +0 -6
  412. package/dist/components/messages/thread-view.js +0 -174
  413. package/dist/components/off-canvas.d.ts +0 -13
  414. package/dist/components/off-canvas.js +0 -89
  415. package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +0 -6
  416. package/dist/components/text-list-editor.tsx/text-list-editor.js +0 -13
  417. package/dist/components/top-bar.d.ts +0 -2
  418. package/dist/components/top-bar.js +0 -51
  419. package/dist/components/typeahead/mentions-plugin.d.ts +0 -7
  420. package/dist/components/typeahead/mentions-plugin.js +0 -203
  421. package/dist/components/typeahead/typeahead-editor.d.ts +0 -15
  422. package/dist/components/typeahead/typeahead-editor.js +0 -134
  423. package/dist/components/typeahead/typeahead.d.ts +0 -12
  424. package/dist/components/typeahead/typeahead.js +0 -94
  425. package/dist/screens/profile.d.ts +0 -2
  426. package/dist/screens/profile.js +0 -76
  427. package/src/components/input-datetime.tsx +0 -41
  428. package/src/components/lazy-sortable-list.tsx +0 -51
  429. package/src/components/left-bar.tsx +0 -322
  430. package/src/components/main-content-container.tsx +0 -79
  431. package/src/components/messages/thread-view.tsx +0 -214
  432. package/src/components/off-canvas.tsx +0 -83
  433. package/src/components/text-list-editor.tsx/text-list-editor.tsx +0 -13
  434. package/src/components/top-bar.tsx +0 -119
  435. package/src/components/typeahead/mentions-plugin.tsx +0 -265
  436. package/src/components/typeahead/typeahead-editor.tsx +0 -140
  437. package/src/components/typeahead/typeahead.tsx +0 -77
  438. package/src/screens/profile.tsx +0 -75
@@ -1,7 +1,7 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { LoadingIndicator } from '../../components/loading-indicator';
3
- import { registerInternalPeersUI } from '../../ui-router/ui-loader';
4
- import { isDesktop } from '../../globals';
1
+ import { useCallback, useEffect, useState } from "react";
2
+ import { LoadingIndicator } from "../../components/loading-indicator";
3
+ import { isDesktop } from "../../globals";
4
+ import { registerInternalPeersUI } from "../../ui-router/ui-loader";
5
5
 
6
6
  interface ITableInfo {
7
7
  tableName: string;
@@ -13,39 +13,54 @@ interface ITableInfo {
13
13
  bytes?: number;
14
14
  }
15
15
 
16
+ type DataExplorerElectronApi = {
17
+ getCurrentContext: () => Promise<{ contextName: string }>;
18
+ getAllTables: () => Promise<ITableInfo[]>;
19
+ compactDatabase: (beforeTimestamp?: number) => Promise<void>;
20
+ resetChangeTracking: () => Promise<void>;
21
+ };
22
+
23
+ type WindowWithDataExplorer = Window & {
24
+ electronAPI?: { dataExplorer?: DataExplorerElectronApi };
25
+ };
26
+
27
+ function getDataExplorerApi(): DataExplorerElectronApi | undefined {
28
+ return (window as WindowWithDataExplorer).electronAPI?.dataExplorer;
29
+ }
30
+
16
31
  export function DataExplorerList() {
17
32
  const [tables, setTables] = useState<ITableInfo[]>([]);
18
33
  const [loading, setLoading] = useState(true);
19
- const [currentContext, setCurrentContext] = useState<string>('');
34
+ const [currentContext, setCurrentContext] = useState<string>("");
20
35
  const [compacting, setCompacting] = useState(false);
21
36
 
22
37
  const formatBytes = (bytes: number | undefined) => {
23
- if (bytes === undefined) return '-';
24
- if (bytes === 0) return '0 B';
38
+ if (bytes === undefined) return "-";
39
+ if (bytes === 0) return "0 B";
25
40
  const k = 1024;
26
- const sizes = ['B', 'KB', 'MB', 'GB'];
41
+ const sizes = ["B", "KB", "MB", "GB"];
27
42
  const i = Math.floor(Math.log(bytes) / Math.log(k));
28
- return Math.round(bytes / Math.pow(k, i)) + ' ' + sizes[i];
43
+ return `${Math.round(bytes / k ** i)} ${sizes[i]}`;
29
44
  };
30
45
 
31
46
  const getBytesColorClass = (bytes: number | undefined): string => {
32
- if (bytes === undefined) return 'text-secondary';
47
+ if (bytes === undefined) return "text-secondary";
33
48
  const kb = 1024;
34
49
  const mb = kb * 1024;
35
50
 
36
- if (bytes < 10 * kb) return 'text-secondary'; // 0 to 10KB: secondary (gray)
37
- if (bytes < 10 * mb) return 'text-primary'; // 10KB to 10MB: primary (blue)
38
- if (bytes < 100 * mb) return 'text-warning'; // 10MB to 100MB: warning (orange)
39
- return 'text-danger'; // >100MB: danger (red)
51
+ if (bytes < 10 * kb) return "text-secondary"; // 0 to 10KB: secondary (gray)
52
+ if (bytes < 10 * mb) return "text-primary"; // 10KB to 10MB: primary (blue)
53
+ if (bytes < 100 * mb) return "text-warning"; // 10MB to 100MB: warning (orange)
54
+ return "text-danger"; // >100MB: danger (red)
40
55
  };
41
56
 
42
- const loadTables = async () => {
57
+ const loadTables = useCallback(async () => {
43
58
  try {
44
59
  if (!isDesktop()) return;
45
60
 
46
- const api = (window as any).electronAPI?.dataExplorer;
61
+ const api = getDataExplorerApi();
47
62
  if (!api) {
48
- console.warn('Data Explorer API not available');
63
+ console.warn("Data Explorer API not available");
49
64
  return;
50
65
  }
51
66
 
@@ -66,25 +81,25 @@ export function DataExplorerList() {
66
81
 
67
82
  setTables(allTablesInfo);
68
83
  } catch (error) {
69
- console.error('Error loading tables:', error);
84
+ console.error("Error loading tables:", error);
70
85
  } finally {
71
86
  setLoading(false);
72
87
  }
73
- };
88
+ }, []);
74
89
 
75
90
  const compactDatabase = async (beforeTimestamp?: number) => {
76
91
  try {
77
92
  setCompacting(true);
78
- const api = (window as any).electronAPI?.dataExplorer;
93
+ const api = getDataExplorerApi();
79
94
  if (!api) {
80
- alert('Data Explorer API not available');
95
+ alert("Data Explorer API not available");
81
96
  return;
82
97
  }
83
98
 
84
99
  const isExtreme = beforeTimestamp !== undefined;
85
100
  if (isExtreme) {
86
101
  const confirmed = window.confirm(
87
- 'Extreme Compaction will remove ALL change history. This cannot be undone. Continue?'
102
+ "Extreme Compaction will remove ALL change history. This cannot be undone. Continue?",
88
103
  );
89
104
  if (!confirmed) {
90
105
  setCompacting(false);
@@ -93,14 +108,14 @@ export function DataExplorerList() {
93
108
  }
94
109
 
95
110
  await api.compactDatabase(beforeTimestamp);
96
- alert(`Database compacted successfully!${isExtreme ? ' (Extreme mode)' : ''}`);
111
+ alert(`Database compacted successfully!${isExtreme ? " (Extreme mode)" : ""}`);
97
112
 
98
113
  // Reload tables to show updated sizes
99
114
  setLoading(true);
100
115
  await loadTables();
101
- } catch (error: any) {
102
- console.error('Error compacting database:', error);
103
- alert(`Error compacting database: ${error.message || 'Unknown error'}`);
116
+ } catch (error: unknown) {
117
+ console.error("Error compacting database:", error);
118
+ alert(`Error compacting database: ${error instanceof Error ? error.message : String(error)}`);
104
119
  } finally {
105
120
  setCompacting(false);
106
121
  }
@@ -109,14 +124,14 @@ export function DataExplorerList() {
109
124
  const resetChangeTracking = async () => {
110
125
  try {
111
126
  setCompacting(true);
112
- const api = (window as any).electronAPI?.dataExplorer;
127
+ const api = getDataExplorerApi();
113
128
  if (!api) {
114
- alert('Data Explorer API not available');
129
+ alert("Data Explorer API not available");
115
130
  return;
116
131
  }
117
132
 
118
133
  const confirmed = window.confirm(
119
- 'Reset Change Tracking will clear all change history and rebuild it from scratch. This may take a while. Continue?'
134
+ "Reset Change Tracking will clear all change history and rebuild it from scratch. This may take a while. Continue?",
120
135
  );
121
136
  if (!confirmed) {
122
137
  setCompacting(false);
@@ -124,14 +139,16 @@ export function DataExplorerList() {
124
139
  }
125
140
 
126
141
  await api.resetChangeTracking();
127
- alert('Change tracking reset successfully!');
142
+ alert("Change tracking reset successfully!");
128
143
 
129
144
  // Reload tables to show updated sizes
130
145
  setLoading(true);
131
146
  await loadTables();
132
- } catch (error: any) {
133
- console.error('Error resetting change tracking:', error);
134
- alert(`Error resetting change tracking: ${error.message || 'Unknown error'}`);
147
+ } catch (error: unknown) {
148
+ console.error("Error resetting change tracking:", error);
149
+ alert(
150
+ `Error resetting change tracking: ${error instanceof Error ? error.message : String(error)}`,
151
+ );
135
152
  } finally {
136
153
  setCompacting(false);
137
154
  }
@@ -139,7 +156,7 @@ export function DataExplorerList() {
139
156
 
140
157
  useEffect(() => {
141
158
  loadTables();
142
- }, []);
159
+ }, [loadTables]);
143
160
 
144
161
  if (loading) {
145
162
  return <LoadingIndicator />;
@@ -158,9 +175,7 @@ export function DataExplorerList() {
158
175
  if (!currentContext && tables.length === 0) {
159
176
  return (
160
177
  <div className="container-fluid p-4">
161
- <div className="alert alert-warning">
162
- Unable to load database information.
163
- </div>
178
+ <div className="alert alert-warning">Unable to load database information.</div>
164
179
  </div>
165
180
  );
166
181
  }
@@ -195,7 +210,11 @@ export function DataExplorerList() {
195
210
  >
196
211
  {compacting ? (
197
212
  <>
198
- <span className="spinner-border spinner-border-sm me-1" role="status" aria-hidden="true"></span>
213
+ <span
214
+ className="spinner-border spinner-border-sm me-1"
215
+ role="status"
216
+ aria-hidden="true"
217
+ ></span>
199
218
  Compacting...
200
219
  </>
201
220
  ) : (
@@ -229,7 +248,9 @@ export function DataExplorerList() {
229
248
  <div className="small text-muted">Remove ALL change history</div>
230
249
  </a>
231
250
  </li>
232
- <li><hr className="dropdown-divider" /></li>
251
+ <li>
252
+ <hr className="dropdown-divider" />
253
+ </li>
233
254
  <li>
234
255
  <a
235
256
  className="dropdown-item"
@@ -282,13 +303,14 @@ export function DataExplorerList() {
282
303
  <div className="card mb-4">
283
304
  <div className="card-body">
284
305
  <h5 className="card-title">
285
- Registered Tables ({tables.filter(t => t.isRegistered).length})
306
+ Registered Tables ({tables.filter((t) => t.isRegistered).length})
286
307
  <span className="badge bg-success ms-2">Active</span>
287
308
  </h5>
288
309
  <p className="text-muted small">
289
- These tables are registered with the TableContainer and actively used by the application.
310
+ These tables are registered with the TableContainer and actively used by the
311
+ application.
290
312
  </p>
291
- {tables.filter(t => t.isRegistered).length === 0 ? (
313
+ {tables.filter((t) => t.isRegistered).length === 0 ? (
292
314
  <p className="text-muted">No registered tables found</p>
293
315
  ) : (
294
316
  <div className="table-responsive">
@@ -302,22 +324,24 @@ export function DataExplorerList() {
302
324
  </tr>
303
325
  </thead>
304
326
  <tbody>
305
- {tables.filter(t => t.isRegistered).map(table => (
306
- <tr key={table.tableName}>
307
- <td>
308
- <strong>{table.tableName}</strong>
309
- </td>
310
- <td>
311
- <code className="text-muted small">{table.tableId || 'system'}</code>
312
- </td>
313
- <td className="text-end">
314
- {table.rowCount !== undefined ? table.rowCount.toLocaleString() : '-'}
315
- </td>
316
- <td className={`text-end fw-bold ${getBytesColorClass(table.bytes)}`}>
317
- {formatBytes(table.bytes)}
318
- </td>
319
- </tr>
320
- ))}
327
+ {tables
328
+ .filter((t) => t.isRegistered)
329
+ .map((table) => (
330
+ <tr key={table.tableName}>
331
+ <td>
332
+ <strong>{table.tableName}</strong>
333
+ </td>
334
+ <td>
335
+ <code className="text-muted small">{table.tableId || "system"}</code>
336
+ </td>
337
+ <td className="text-end">
338
+ {table.rowCount !== undefined ? table.rowCount.toLocaleString() : "-"}
339
+ </td>
340
+ <td className={`text-end fw-bold ${getBytesColorClass(table.bytes)}`}>
341
+ {formatBytes(table.bytes)}
342
+ </td>
343
+ </tr>
344
+ ))}
321
345
  </tbody>
322
346
  </table>
323
347
  </div>
@@ -326,16 +350,16 @@ export function DataExplorerList() {
326
350
  </div>
327
351
 
328
352
  {/* Unregistered Tables (Raw SQLite) */}
329
- {tables.some(t => !t.isRegistered) && (
353
+ {tables.some((t) => !t.isRegistered) && (
330
354
  <div className="card">
331
355
  <div className="card-body">
332
356
  <h5 className="card-title">
333
- Unregistered Tables ({tables.filter(t => !t.isRegistered).length})
357
+ Unregistered Tables ({tables.filter((t) => !t.isRegistered).length})
334
358
  <span className="badge bg-warning text-dark ms-2">Raw SQLite</span>
335
359
  </h5>
336
360
  <p className="text-muted small">
337
- These tables exist in the SQLite database but are not registered with the TableContainer.
338
- They may be system tables, change tracking tables, or legacy tables.
361
+ These tables exist in the SQLite database but are not registered with the
362
+ TableContainer. They may be system tables, change tracking tables, or legacy tables.
339
363
  </p>
340
364
  <div className="table-responsive">
341
365
  <table className="table table-hover table-sm">
@@ -349,36 +373,48 @@ export function DataExplorerList() {
349
373
  </tr>
350
374
  </thead>
351
375
  <tbody>
352
- {tables.filter(t => !t.isRegistered).map(table => (
353
- <tr key={table.tableName}>
354
- <td>
355
- <strong>{table.tableName}</strong>
356
- </td>
357
- <td>
358
- <span className="badge bg-secondary">{table.type || 'table'}</span>
359
- </td>
360
- <td className="text-end">
361
- {table.rowCount !== undefined ? table.rowCount.toLocaleString() : '-'}
362
- </td>
363
- <td className={`text-end fw-bold ${getBytesColorClass(table.bytes)}`}>
364
- {formatBytes(table.bytes)}
365
- </td>
366
- <td>
367
- {table.sql ? (
368
- <details>
369
- <summary className="cursor-pointer text-primary" style={{ cursor: 'pointer' }}>
370
- <small>View SQL</small>
371
- </summary>
372
- <pre className="mt-2 p-2 bg-body-secondary border rounded" style={{ fontSize: '0.75rem', maxHeight: '300px', overflow: 'auto' }}>
373
- <code className="text-body">{table.sql}</code>
374
- </pre>
375
- </details>
376
- ) : (
377
- <span className="text-muted small">-</span>
378
- )}
379
- </td>
380
- </tr>
381
- ))}
376
+ {tables
377
+ .filter((t) => !t.isRegistered)
378
+ .map((table) => (
379
+ <tr key={table.tableName}>
380
+ <td>
381
+ <strong>{table.tableName}</strong>
382
+ </td>
383
+ <td>
384
+ <span className="badge bg-secondary">{table.type || "table"}</span>
385
+ </td>
386
+ <td className="text-end">
387
+ {table.rowCount !== undefined ? table.rowCount.toLocaleString() : "-"}
388
+ </td>
389
+ <td className={`text-end fw-bold ${getBytesColorClass(table.bytes)}`}>
390
+ {formatBytes(table.bytes)}
391
+ </td>
392
+ <td>
393
+ {table.sql ? (
394
+ <details>
395
+ <summary
396
+ className="cursor-pointer text-primary"
397
+ style={{ cursor: "pointer" }}
398
+ >
399
+ <small>View SQL</small>
400
+ </summary>
401
+ <pre
402
+ className="mt-2 p-2 bg-body-secondary border rounded"
403
+ style={{
404
+ fontSize: "0.75rem",
405
+ maxHeight: "300px",
406
+ overflow: "auto",
407
+ }}
408
+ >
409
+ <code className="text-body">{table.sql}</code>
410
+ </pre>
411
+ </details>
412
+ ) : (
413
+ <span className="text-muted small">-</span>
414
+ )}
415
+ </td>
416
+ </tr>
417
+ ))}
382
418
  </tbody>
383
419
  </table>
384
420
  </div>
@@ -390,13 +426,13 @@ export function DataExplorerList() {
390
426
  }
391
427
 
392
428
  registerInternalPeersUI({
393
- peersUIId: 'data-explorer-list-ui',
429
+ peersUIId: "data-explorer-list-ui",
394
430
  component: DataExplorerList,
395
431
  routes: [
396
432
  {
397
- isMatch: (_props, context) => context.path === 'data-explorer',
398
- uiCategory: 'screen',
399
- priority: 2
400
- }
401
- ]
433
+ isMatch: (_props, context) => context.path === "data-explorer",
434
+ uiCategory: "screen",
435
+ priority: 2,
436
+ },
437
+ ],
402
438
  });
@@ -1,7 +1,6 @@
1
-
2
1
  // Import all data explorer screen components to ensure they register their routes
3
- import './data-explorer';
4
- import './query-executor';
2
+ import "./data-explorer";
3
+ import "./query-executor";
5
4
 
6
5
  export * from "./data-explorer";
7
6
  export * from "./query-executor";