windmill-components 1.613.5 → 1.623.1

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 (429) hide show
  1. package/package/assets/tokens/tokens.json +1 -11
  2. package/package/ata/apis.js +5 -78
  3. package/package/components/AddUser.svelte +1 -1
  4. package/package/components/CenteredModal.svelte +24 -32
  5. package/package/components/CenteredModal.svelte.d.ts +27 -7
  6. package/package/components/CenteredPage.svelte +2 -5
  7. package/package/components/CenteredPage.svelte.d.ts +0 -2
  8. package/package/components/ConcurrentJobsChart.svelte +2 -3
  9. package/package/components/ConcurrentJobsChart.svelte.d.ts +2 -2
  10. package/package/components/CustomPopover.svelte +23 -20
  11. package/package/components/CustomPopover.svelte.d.ts +39 -14
  12. package/package/components/DBManager.svelte +17 -105
  13. package/package/components/DBManager.svelte.d.ts +1 -2
  14. package/package/components/DBManagerContent.svelte +3 -4
  15. package/package/components/DBManagerContent.svelte.d.ts +1 -1
  16. package/package/components/DBTableEditor.svelte +171 -210
  17. package/package/components/DBTableEditor.svelte.d.ts +3 -22
  18. package/package/components/Description.svelte +2 -3
  19. package/package/components/Dev.svelte +2 -36
  20. package/package/components/DiffDrawer.svelte +29 -8
  21. package/package/components/DiffEditor.svelte +2 -32
  22. package/package/components/DisplayResult.svelte +24 -32
  23. package/package/components/Editor.svelte +16 -70
  24. package/package/components/Editor.svelte.d.ts +0 -3
  25. package/package/components/EditorBar.svelte +1 -1
  26. package/package/components/FakeMonacoPlaceHolder.svelte +1 -1
  27. package/package/components/FlowBuilder.svelte +11 -17
  28. package/package/components/FlowPreviewContent.svelte +2 -3
  29. package/package/components/FlowPreviewResult.svelte +4 -0
  30. package/package/components/FlowRestartButton.svelte +3 -2
  31. package/package/components/FlowRestartButton.svelte.d.ts +0 -3
  32. package/package/components/FlowStatusViewerInner.svelte +33 -50
  33. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -1
  34. package/package/components/FlowStatusWaitingForEvents.svelte +23 -27
  35. package/package/components/FlowStatusWaitingForEvents.svelte.d.ts +18 -4
  36. package/package/components/FlowViewer.svelte +2 -103
  37. package/package/components/FlowViewer.svelte.d.ts +3 -9
  38. package/package/components/ForkWorkspaceBanner.svelte +13 -16
  39. package/package/components/GraphqlSchemaViewer.svelte +1 -8
  40. package/package/components/HistoricInputs.svelte +27 -25
  41. package/package/components/HistoricInputs.svelte.d.ts +2 -2
  42. package/package/components/InstanceSetting.svelte +0 -38
  43. package/package/components/InviteUser.svelte +42 -16
  44. package/package/components/InviteUser.svelte.d.ts +18 -4
  45. package/package/components/JsonInputs.svelte +8 -6
  46. package/package/components/JsonInputs.svelte.d.ts +8 -7
  47. package/package/components/LogViewer.svelte +33 -91
  48. package/package/components/Login.svelte +0 -21
  49. package/package/components/ManualPopover.svelte +6 -5
  50. package/package/components/ManualPopover.svelte.d.ts +35 -9
  51. package/package/components/MemoryFootprintViewer.svelte +6 -2
  52. package/package/components/ModulePreview.svelte +21 -23
  53. package/package/components/ModulePreview.svelte.d.ts +0 -1
  54. package/package/components/OAuthSetting.svelte +11 -23
  55. package/package/components/Path.svelte +2 -2
  56. package/package/components/Path.svelte.d.ts +1 -1
  57. package/package/components/ResourcePicker.svelte +0 -3
  58. package/package/components/ResourcePicker.svelte.d.ts +0 -1
  59. package/package/components/RunButton.svelte +15 -5
  60. package/package/components/RunButton.svelte.d.ts +19 -7
  61. package/package/components/RunChart.svelte +4 -8
  62. package/package/components/RunChart.svelte.d.ts +2 -2
  63. package/package/components/RunFormAdvancedPopup.svelte +1 -1
  64. package/package/components/RunsPage.svelte +539 -170
  65. package/package/components/RunsPage.svelte.d.ts +5 -5
  66. package/package/components/S3FilePicker.svelte +11 -7
  67. package/package/components/S3FilePickerInner.svelte +3 -2
  68. package/package/components/S3FilePickerInner.svelte.d.ts +2 -2
  69. package/package/components/SavedInputs.svelte +416 -0
  70. package/package/components/{tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte.d.ts → SavedInputs.svelte.d.ts} +11 -8
  71. package/package/components/SchemaForm.svelte +19 -26
  72. package/package/components/SchemaFormWithArgPicker.svelte +3 -4
  73. package/package/components/ScriptBuilder.svelte +1 -1
  74. package/package/components/ScriptEditor.svelte +101 -575
  75. package/package/components/Section.svelte +1 -3
  76. package/package/components/ServiceLogsInner.svelte +4 -4
  77. package/package/components/ShareModal.svelte.d.ts +1 -1
  78. package/package/components/SimpleEditor.svelte +2 -46
  79. package/package/components/SuperadminSettingsInner.svelte +1 -1
  80. package/package/components/TemplateEditor.svelte +29 -54
  81. package/package/components/TemplateEditor.svelte.d.ts +102 -13
  82. package/package/components/UserSettings.svelte +1 -1
  83. package/package/components/WorkerTagPicker.svelte +1 -1
  84. package/package/components/WorkerTagSelect.svelte +2 -5
  85. package/package/components/WorkspaceTutorials.svelte +0 -5
  86. package/package/components/apps/components/buttons/AppButton.svelte +6 -21
  87. package/package/components/apps/components/buttons/AppForm.svelte +1 -2
  88. package/package/components/apps/components/buttons/AppFormButton.svelte +1 -2
  89. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +4 -0
  90. package/package/components/apps/components/display/dbtable/metadata.js +30 -69
  91. package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +24 -2
  92. package/package/components/apps/components/display/dbtable/queries/createTable.js +25 -11
  93. package/package/components/apps/components/display/dbtable/queries/select.d.ts +0 -2
  94. package/package/components/apps/components/display/dbtable/queries/select.js +6 -37
  95. package/package/components/apps/components/display/dbtable/utils.d.ts +1 -10
  96. package/package/components/apps/components/display/dbtable/utils.js +20 -52
  97. package/package/components/apps/components/helpers/HiddenComponent.svelte +1 -1
  98. package/package/components/apps/components/helpers/InputValue.svelte +1 -1
  99. package/package/components/apps/components/helpers/ResolveConfig.svelte +1 -1
  100. package/package/components/apps/components/helpers/RunnableComponent.svelte +2 -3
  101. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -1
  102. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -2
  103. package/package/components/apps/editor/AppEditorHeader.svelte +1 -8
  104. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +29 -32
  105. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +2 -2
  106. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +4 -4
  107. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +3 -3
  108. package/package/components/apps/editor/PublicApp.svelte +30 -49
  109. package/package/components/apps/editor/PublicApp.svelte.d.ts +0 -1
  110. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +7 -77
  111. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +2 -2
  112. package/package/components/apps/editor/inlineScriptsPanel/utils.d.ts +2 -2
  113. package/package/components/apps/editor/inlineScriptsPanel/utils.js +1 -10
  114. package/package/components/apps/inputType.d.ts +1 -6
  115. package/package/components/auditLogs/AuditLogsFilters.svelte +17 -9
  116. package/package/components/auditLogs/AuditLogsFilters.svelte.d.ts +1 -1
  117. package/package/components/common/button/model.js +1 -1
  118. package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +1 -1
  119. package/package/components/common/languageIcons/TypeScript.svelte +3 -5
  120. package/package/components/common/languageIcons/TypeScript.svelte.d.ts +0 -1
  121. package/package/components/common/modal/Modal.svelte +3 -3
  122. package/package/components/copilot/autocomplete/Autocompletor.js +2 -3
  123. package/package/components/copilot/chat/AIButtonStyle.d.ts +1 -1
  124. package/package/components/copilot/chat/AIButtonStyle.js +1 -2
  125. package/package/components/copilot/chat/AIChat.svelte +1 -3
  126. package/package/components/copilot/chat/AIChatDisplay.svelte +4 -89
  127. package/package/components/copilot/chat/AIChatInput.svelte +0 -275
  128. package/package/components/copilot/chat/AIChatManager.svelte.js +1 -107
  129. package/package/components/copilot/chat/AiChatLayout.svelte +30 -15
  130. package/package/components/copilot/chat/ContextElementBadge.svelte +0 -44
  131. package/package/components/copilot/chat/DatatableCreationPolicy.svelte +33 -32
  132. package/package/components/copilot/chat/ProviderModelSelector.svelte +1 -1
  133. package/package/components/copilot/chat/__tests__/app/appEvalHelpers.js +0 -3
  134. package/package/components/copilot/chat/__tests__/flow/flowEvalHelpers.js +0 -4
  135. package/package/components/copilot/chat/app/core.d.ts +15 -56
  136. package/package/components/copilot/chat/app/core.js +22 -141
  137. package/package/components/copilot/chat/context.d.ts +2 -59
  138. package/package/components/copilot/chat/context.js +2 -6
  139. package/package/components/copilot/chat/flow/FlowAIChat.svelte +0 -22
  140. package/package/components/copilot/chat/flow/core.d.ts +1 -3
  141. package/package/components/copilot/chat/flow/core.js +2 -29
  142. package/package/components/copilot/chat/flow/openFlow.json +1 -1
  143. package/package/components/copilot/chat/flow/openFlowZod.d.ts +0 -1
  144. package/package/components/copilot/chat/flow/openFlowZod.js +2 -14
  145. package/package/components/copilot/chat/script/core.d.ts +1 -4
  146. package/package/components/copilot/chat/script/core.js +2 -38
  147. package/package/components/copilot/chat/shared.d.ts +0 -10
  148. package/package/components/copilot/chat/shared.js +0 -24
  149. package/package/components/copilot/lib.d.ts +1 -1
  150. package/package/components/custom_ui.d.ts +0 -2
  151. package/package/components/dbOps.d.ts +4 -18
  152. package/package/components/dbOps.js +3 -25
  153. package/package/components/flows/CreateActionsApp.svelte +4 -6
  154. package/package/components/flows/DebounceLimit.svelte.d.ts +1 -1
  155. package/package/components/flows/FlowHistoryInner.svelte +4 -15
  156. package/package/components/flows/content/AgentToolWrapper.svelte +1 -1
  157. package/package/components/flows/content/FlowInput.svelte +37 -211
  158. package/package/components/flows/content/FlowModuleComponent.svelte +67 -553
  159. package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -8
  160. package/package/components/flows/content/FlowModuleHeader.svelte +4 -7
  161. package/package/components/flows/content/FlowModuleWorkerTagSelect.svelte +1 -1
  162. package/package/components/flows/content/McpToolEditor.svelte +37 -50
  163. package/package/components/flows/content/McpToolEditor.svelte.d.ts +1 -0
  164. package/package/components/flows/conversations/FlowChat.svelte +2 -16
  165. package/package/components/flows/conversations/FlowChat.svelte.d.ts +1 -2
  166. package/package/components/flows/conversations/FlowChatInterface.svelte +6 -103
  167. package/package/components/flows/conversations/FlowChatInterface.svelte.d.ts +0 -2
  168. package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -53
  169. package/package/components/flows/header/FlowImportExportMenu.svelte +1 -1
  170. package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -3
  171. package/package/components/flows/types.d.ts +0 -2
  172. package/package/components/git_sync/GitSyncRepositoryCard.svelte +8 -16
  173. package/package/components/home/ItemsList.svelte +5 -5
  174. package/package/components/home/TutorialBanner.svelte +18 -34
  175. package/package/components/icons/CssIcon.svelte +0 -20
  176. package/package/components/icons/CssIcon.svelte.d.ts +25 -7
  177. package/package/components/icons/JavaScriptIcon.svelte +2 -10
  178. package/package/components/icons/JavaScriptIcon.svelte.d.ts +0 -1
  179. package/package/components/icons/JsonIcon.svelte +2 -8
  180. package/package/components/icons/JsonIcon.svelte.d.ts +0 -1
  181. package/package/components/icons/ReactIcon.svelte +2 -10
  182. package/package/components/icons/ReactIcon.svelte.d.ts +0 -1
  183. package/package/components/icons/SvelteIcon.svelte +2 -10
  184. package/package/components/icons/SvelteIcon.svelte.d.ts +0 -1
  185. package/package/components/icons/VueIcon.svelte +2 -10
  186. package/package/components/icons/VueIcon.svelte.d.ts +0 -1
  187. package/package/components/instanceSettings.d.ts +1 -2
  188. package/package/components/instanceSettings.js +1 -32
  189. package/package/components/jobs/JobPreview.svelte +39 -46
  190. package/package/components/jobs/JobPreview.svelte.d.ts +0 -1
  191. package/package/components/monacoLanguagesOptions.js +15 -16
  192. package/package/components/propertyPicker/PropPicker.svelte +2 -16
  193. package/package/components/propertyPicker/PropPicker.svelte.d.ts +0 -2
  194. package/package/components/raw_apps/DefaultDatabaseSelector.svelte +5 -9
  195. package/package/components/raw_apps/FileEditorIcon.svelte +7 -12
  196. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +0 -2
  197. package/package/components/raw_apps/FileTreeNode.svelte +83 -119
  198. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +8 -88
  199. package/package/components/raw_apps/RawAppDataTableList.svelte +9 -12
  200. package/package/components/raw_apps/RawAppEditor.svelte +68 -218
  201. package/package/components/raw_apps/RawAppEditorHeader.svelte +16 -33
  202. package/package/components/raw_apps/RawAppHistoryList.svelte +80 -264
  203. package/package/components/raw_apps/RawAppHistoryList.svelte.d.ts +0 -1
  204. package/package/components/raw_apps/RawAppHistoryManager.svelte.d.ts +1 -15
  205. package/package/components/raw_apps/RawAppHistoryManager.svelte.js +12 -46
  206. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +47 -549
  207. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +5 -31
  208. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +18 -25
  209. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +0 -1
  210. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +10 -141
  211. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +0 -8
  212. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +1 -2
  213. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +1 -9
  214. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +3 -47
  215. package/package/components/raw_apps/RawAppInputsSpecEditor.svelte.d.ts +2 -2
  216. package/package/components/raw_apps/RawAppModules.svelte +7 -13
  217. package/package/components/raw_apps/RawAppPreview.svelte +6 -48
  218. package/package/components/raw_apps/RawAppSidebar.svelte +125 -194
  219. package/package/components/raw_apps/RawAppSidebar.svelte.d.ts +0 -1
  220. package/package/components/raw_apps/utils.d.ts +1 -1
  221. package/package/components/raw_apps/utils.js +18 -76
  222. package/package/components/runs/JobsLoader.svelte +468 -0
  223. package/package/components/runs/JobsLoader.svelte.d.ts +49 -0
  224. package/package/components/runs/ManuelDatePicker.svelte +3 -3
  225. package/package/components/runs/ManuelDatePicker.svelte.d.ts +3 -3
  226. package/package/components/runs/NoWorkerWithTagWarning.svelte +1 -5
  227. package/package/components/runs/RunsFilter.svelte +63 -75
  228. package/package/components/runs/RunsFilter.svelte.d.ts +4 -35
  229. package/package/components/runs/RunsQueue.svelte.d.ts +1 -1
  230. package/package/components/runs/RunsTable.svelte +1 -1
  231. package/package/components/runs/RunsTable.svelte.d.ts +1 -1
  232. package/package/components/schema/SchemaPicker.svelte +92 -0
  233. package/package/components/{tutorials/RunsTutorial.svelte.d.ts → schema/SchemaPicker.svelte.d.ts} +12 -11
  234. package/package/components/scriptEditor/LogPanel.svelte +2 -17
  235. package/package/components/scriptEditor/LogPanel.svelte.d.ts +0 -2
  236. package/package/components/select/SelectDropdown.svelte +2 -2
  237. package/package/components/settings/ChangeWorkspaceColor.svelte +3 -4
  238. package/package/components/settings/ChangeWorkspaceId.svelte +10 -14
  239. package/package/components/settings/ChangeWorkspaceName.svelte +6 -7
  240. package/package/components/settings/CreateToken.svelte +1 -1
  241. package/package/components/settings/UserAIPromptsSettings.svelte +15 -56
  242. package/package/components/settings/WorkspaceOperatorSettings.svelte +85 -68
  243. package/package/components/settings/WorkspaceUserSettings.svelte +406 -531
  244. package/package/components/sidebar/MenuButton.svelte +24 -46
  245. package/package/components/sidebar/MenuButton.svelte.d.ts +0 -2
  246. package/package/components/sidebar/MultiplayerMenu.svelte +3 -3
  247. package/package/components/sidebar/OperatorMenu.svelte +88 -63
  248. package/package/components/sidebar/SidebarContent.svelte +2 -7
  249. package/package/components/sidebar/UserMenu.svelte +1 -1
  250. package/package/components/sidebar/WorkspaceMenu.svelte +85 -35
  251. package/package/components/sqlTypeService.js +3 -4
  252. package/package/components/table/DataTable.svelte +2 -3
  253. package/package/components/table/DataTable.svelte.d.ts +0 -1
  254. package/package/components/text_input/TextInput.svelte +0 -3
  255. package/package/components/text_input/TextInput.svelte.d.ts +0 -2
  256. package/package/components/triggers/utils.js +1 -0
  257. package/package/components/tutorials/FlowBuilderLiveTutorial.svelte +35 -6
  258. package/package/components/tutorials/TroubleshootFlowTutorial.svelte +20 -5
  259. package/package/components/tutorials/utils.d.ts +0 -16
  260. package/package/components/tutorials/utils.js +0 -96
  261. package/package/components/vscode.js +6 -6
  262. package/package/components/workspaceSettings/AISettings.svelte +108 -146
  263. package/package/components/workspaceSettings/CreateWorkspace.svelte +12 -26
  264. package/package/components/workspaceSettings/DucklakeSettings.svelte +23 -46
  265. package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +1 -2
  266. package/package/components/workspaceSettings/ModelTokenLimits.svelte +18 -14
  267. package/package/components/workspaceSettings/StorageSettings.svelte +241 -280
  268. package/package/components/workspaceSettings/StorageSettings.svelte.d.ts +0 -1
  269. package/package/consts.js +1 -4
  270. package/package/gen/core/OpenAPI.js +1 -1
  271. package/package/gen/schemas.gen.d.ts +1 -133
  272. package/package/gen/schemas.gen.js +1 -133
  273. package/package/gen/services.gen.d.ts +10 -160
  274. package/package/gen/services.gen.js +20 -319
  275. package/package/gen/types.gen.d.ts +19 -609
  276. package/package/hubPaths.json +2 -3
  277. package/package/infer.js +0 -2
  278. package/package/logout.d.ts +2 -0
  279. package/package/logout.js +23 -2
  280. package/package/monaco_workers/graphql.worker.bundle.js +121 -121
  281. package/package/navigation.d.ts +1 -1
  282. package/package/rawAppWmillTs.d.ts +0 -11
  283. package/package/rawAppWmillTs.js +1 -38
  284. package/package/svelte5Utils.svelte.d.ts +1 -7
  285. package/package/svelte5Utils.svelte.js +2 -23
  286. package/package/tutorialUtils.js +4 -0
  287. package/package/tutorials/config.js +3 -31
  288. package/package/tutorials/roleUtils.d.ts +1 -1
  289. package/package/tutorials/roleUtils.js +2 -6
  290. package/package/utils.js +1 -159
  291. package/package.json +4 -6
  292. package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
  293. package/dist/sharedUtils/base.d.ts +0 -1
  294. package/dist/sharedUtils/cloud.d.ts +0 -1
  295. package/dist/sharedUtils/common.d.ts +0 -111
  296. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
  297. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
  298. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
  299. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
  300. package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
  301. package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
  302. package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
  303. package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
  304. package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
  305. package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
  306. package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
  307. package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
  308. package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
  309. package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
  310. package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
  311. package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
  312. package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
  313. package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
  314. package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
  315. package/dist/sharedUtils/components/apps/types.d.ts +0 -274
  316. package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
  317. package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
  318. package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
  319. package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
  320. package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
  321. package/dist/sharedUtils/components/common/index.d.ts +0 -24
  322. package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
  323. package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
  324. package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
  325. package/dist/sharedUtils/components/ducklake.d.ts +0 -1
  326. package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
  327. package/dist/sharedUtils/components/icons/index.d.ts +0 -101
  328. package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
  329. package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
  330. package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
  331. package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
  332. package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
  333. package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
  334. package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +0 -2
  335. package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
  336. package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
  337. package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
  338. package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
  339. package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
  340. package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
  341. package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
  342. package/dist/sharedUtils/components/triggers.d.ts +0 -20
  343. package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
  344. package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
  345. package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
  346. package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
  347. package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
  348. package/dist/sharedUtils/gen/core/request.d.ts +0 -29
  349. package/dist/sharedUtils/gen/index.d.ts +0 -6
  350. package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
  351. package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
  352. package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
  353. package/dist/sharedUtils/history.svelte.d.ts +0 -9
  354. package/dist/sharedUtils/hub.d.ts +0 -49
  355. package/dist/sharedUtils/jsr.json +0 -6
  356. package/dist/sharedUtils/lib.d.ts +0 -5
  357. package/dist/sharedUtils/lib.es.js +0 -1588
  358. package/dist/sharedUtils/package.json +0 -12
  359. package/dist/sharedUtils/schema.d.ts +0 -3
  360. package/dist/sharedUtils/stores.d.ts +0 -97
  361. package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
  362. package/dist/sharedUtils/toast.d.ts +0 -8
  363. package/dist/sharedUtils/utils.d.ts +0 -265
  364. package/package/components/FlowDiffViewer.svelte +0 -37
  365. package/package/components/FlowDiffViewer.svelte.d.ts +0 -7
  366. package/package/components/JobOtelTraces.svelte +0 -287
  367. package/package/components/JobOtelTraces.svelte.d.ts +0 -6
  368. package/package/components/apps/components/display/dbtable/queries/alterTable.d.ts +0 -46
  369. package/package/components/apps/components/display/dbtable/queries/alterTable.js +0 -314
  370. package/package/components/apps/components/display/dbtable/queries/alterTable.test.d.ts +0 -1
  371. package/package/components/apps/components/display/dbtable/queries/alterTable.test.js +0 -867
  372. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.d.ts +0 -9
  373. package/package/components/apps/components/display/dbtable/queries/dbQueriesUtils.js +0 -45
  374. package/package/components/apps/components/display/dbtable/queries/relationalKeys.d.ts +0 -47
  375. package/package/components/apps/components/display/dbtable/queries/relationalKeys.js +0 -402
  376. package/package/components/apps/components/display/dbtable/tableEditor.d.ts +0 -35
  377. package/package/components/apps/components/display/dbtable/tableEditor.js +0 -49
  378. package/package/components/copilot/chat/AppAvailableContextList.svelte +0 -263
  379. package/package/components/copilot/chat/AppAvailableContextList.svelte.d.ts +0 -13
  380. package/package/components/debug/DebugConsole.svelte +0 -277
  381. package/package/components/debug/DebugConsole.svelte.d.ts +0 -13
  382. package/package/components/debug/DebugPanel.svelte +0 -97
  383. package/package/components/debug/DebugPanel.svelte.d.ts +0 -11
  384. package/package/components/debug/DebugToolbar.svelte +0 -148
  385. package/package/components/debug/DebugToolbar.svelte.d.ts +0 -17
  386. package/package/components/debug/DebugVariableViewer.svelte +0 -115
  387. package/package/components/debug/DebugVariableViewer.svelte.d.ts +0 -11
  388. package/package/components/debug/MonacoDebugger.svelte +0 -384
  389. package/package/components/debug/MonacoDebugger.svelte.d.ts +0 -15
  390. package/package/components/debug/dapClient.d.ts +0 -192
  391. package/package/components/debug/dapClient.js +0 -426
  392. package/package/components/debug/debugUtils.d.ts +0 -30
  393. package/package/components/debug/debugUtils.js +0 -131
  394. package/package/components/debug/index.d.ts +0 -75
  395. package/package/components/debug/index.js +0 -82
  396. package/package/components/flows/content/FlowEditorDrawer.svelte +0 -124
  397. package/package/components/flows/content/FlowEditorDrawer.svelte.d.ts +0 -22
  398. package/package/components/flows/content/McpOAuthConnect.svelte +0 -217
  399. package/package/components/flows/content/McpOAuthConnect.svelte.d.ts +0 -7
  400. package/package/components/icons/HtmlIcon.svelte +0 -20
  401. package/package/components/icons/HtmlIcon.svelte.d.ts +0 -8
  402. package/package/components/icons/LessIcon.svelte +0 -16
  403. package/package/components/icons/LessIcon.svelte.d.ts +0 -8
  404. package/package/components/icons/MarkdownIcon.svelte +0 -20
  405. package/package/components/icons/MarkdownIcon.svelte.d.ts +0 -8
  406. package/package/components/icons/SassIcon.svelte +0 -28
  407. package/package/components/icons/SassIcon.svelte.d.ts +0 -8
  408. package/package/components/icons/YamlIcon.svelte +0 -20
  409. package/package/components/icons/YamlIcon.svelte.d.ts +0 -8
  410. package/package/components/instanceSettings/SecretBackendConfig.svelte +0 -514
  411. package/package/components/instanceSettings/SecretBackendConfig.svelte.d.ts +0 -8
  412. package/package/components/raw_apps/RunnableRow.svelte +0 -41
  413. package/package/components/raw_apps/RunnableRow.svelte.d.ts +0 -11
  414. package/package/components/runs/useJobsLoader.svelte.d.ts +0 -34
  415. package/package/components/runs/useJobsLoader.svelte.js +0 -507
  416. package/package/components/settings/AIPromptsModal.svelte +0 -88
  417. package/package/components/settings/AIPromptsModal.svelte.d.ts +0 -11
  418. package/package/components/tutorials/RunsTutorial.svelte +0 -399
  419. package/package/components/tutorials/workspace/WorkspaceOnboardingOperatorTutorial.svelte +0 -133
  420. package/package/components/workspace/WorkspaceCard.svelte +0 -184
  421. package/package/components/workspace/WorkspaceCard.svelte.d.ts +0 -24
  422. package/package/components/workspace/WorkspaceIcon.svelte +0 -21
  423. package/package/components/workspace/WorkspaceIcon.svelte.d.ts +0 -9
  424. package/package/components/workspace/WorkspaceTreeView.svelte +0 -331
  425. package/package/components/workspace/WorkspaceTreeView.svelte.d.ts +0 -15
  426. package/package/logoutKit.d.ts +0 -2
  427. package/package/logoutKit.js +0 -26
  428. package/package/svelte5UtilsKit.svelte.d.ts +0 -3
  429. package/package/svelte5UtilsKit.svelte.js +0 -30
@@ -1,18 +1,19 @@
1
1
  <script lang="ts">import AddUser from '../AddUser.svelte';
2
- import { Alert, Badge, Button, Section, Skeleton } from '../common';
2
+ import { Badge, Button, Skeleton } from '../common';
3
3
  import Popover from '../meltComponents/Popover.svelte';
4
4
  import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
5
5
  import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
6
6
  import WorkspaceOperatorSettings from './WorkspaceOperatorSettings.svelte';
7
7
  import InviteUser from '../InviteUser.svelte';
8
+ import PageHeader from '../PageHeader.svelte';
8
9
  import DataTable from '../table/DataTable.svelte';
9
10
  import Head from '../table/Head.svelte';
10
11
  import Toggle from '../Toggle.svelte';
11
12
  import Tooltip from '../Tooltip.svelte';
12
13
  import { UserService, WorkspaceService, GroupService } from '../../gen';
13
- import { userStore, workspaceStore, superadmin, globalEmailInvite } from '../../stores';
14
+ import { userStore, workspaceStore } from '../../stores';
14
15
  import { sendUserToast } from '../../toast';
15
- import { Loader2, Mails, Search, Plus, UserMinus, X } from 'lucide-svelte';
16
+ import { Loader2, Mails, Search, Plus } from 'lucide-svelte';
16
17
  import Select from '../select/Select.svelte';
17
18
  import SearchItems from '../SearchItems.svelte';
18
19
  import Cell from '../table/Cell.svelte';
@@ -21,14 +22,13 @@ import ConfirmationModal from '../common/confirmationModal/ConfirmationModal.sve
21
22
  import { isCloudHosted } from '../../cloud';
22
23
  import { truncate } from '../../utils';
23
24
  import { onDestroy, untrack } from 'svelte';
24
- import { goto } from '../../navigation';
25
25
  let users = $state(undefined);
26
26
  let invites = $state([]);
27
27
  let filteredUsers = $state(undefined);
28
28
  let userFilter = $state('');
29
29
  let auto_invite_domain = $state();
30
30
  let operatorOnly = $state(undefined);
31
- let autoAdd = $state(false);
31
+ let autoAdd = $state(undefined);
32
32
  let nbDisplayed = $state(30);
33
33
  // Instance group auto-add settings
34
34
  let instanceGroups = $state([]);
@@ -219,10 +219,6 @@ onDestroy(() => {
219
219
  let deleteConfirmedCallback = $state(undefined);
220
220
  let removeInstanceGroupConfirmedCallback = $state(undefined);
221
221
  let convertConfirmedCallback = $state(undefined);
222
- // Auto-add/invite confirmation modal states
223
- let autoAddConfirmCallback = $state(undefined);
224
- let autoInviteDisableConfirmCallback = $state(undefined);
225
- let switchToAutoAddConfirmCallback = $state(undefined);
226
222
  async function removeAllInvitesFromDomain() {
227
223
  await Promise.all(invites
228
224
  .filter((x) => isCloudHosted() ? x.email.endsWith('@' + (auto_invite_domain ?? '')) : true)
@@ -236,93 +232,9 @@ async function removeAllInvitesFromDomain() {
236
232
  })));
237
233
  }
238
234
  let nbInviteDisplayed = $state(50);
239
- async function inviteUser(email, selected) {
240
- try {
241
- await WorkspaceService.inviteUser({
242
- workspace: $workspaceStore,
243
- requestBody: {
244
- email,
245
- is_admin: selected == 'admin',
246
- operator: selected == 'operator'
247
- }
248
- });
249
- sendUserToast(`Invited ${email}`);
250
- }
251
- catch (e) {
252
- console.error('Failed to invite user:', e);
253
- sendUserToast('Failed to invite user', true);
254
- }
255
- if (!(await UserService.existsEmail({ email }))) {
256
- let isSuperadmin = $superadmin;
257
- if (!isCloudHosted()) {
258
- sendUserToast(`User ${email} is not registered yet on the instance. ${!isSuperadmin
259
- ? `If not using SSO, ask an administrator to add ${email} to the instance`
260
- : ''}`, true, isSuperadmin
261
- ? [
262
- {
263
- label: 'Add user to the instance',
264
- callback: () => {
265
- $globalEmailInvite = email;
266
- goto('#superadmin-settings');
267
- }
268
- }
269
- ]
270
- : []);
271
- }
272
- }
273
- listInvites();
274
- }
275
- async function updateAutoInvite(enable) {
276
- // Cleanup invites if auto add is enabled
277
- if (enable && autoAdd) {
278
- await removeAllInvitesFromDomain();
279
- }
280
- const updateType = enable ? (autoInviteOrAddEnabled ? 'update' : 'enable') : 'disable';
281
- try {
282
- // await removeAllInvitesFromDomain()
283
- await WorkspaceService.editAutoInvite({
284
- workspace: $workspaceStore ?? '',
285
- requestBody: enable
286
- ? {
287
- operator: operatorOnly ?? false,
288
- invite_all: !isCloudHosted(),
289
- auto_add: autoAdd
290
- }
291
- : {
292
- operator: undefined,
293
- auto_add: undefined
294
- }
295
- });
296
- const message = updateType === 'update'
297
- ? `Auto-${autoAdd ? 'add' : 'invite'} updated`
298
- : updateType === 'enable'
299
- ? `Auto-${autoAdd ? 'add' : 'invite'} enabled`
300
- : `Auto-${autoAdd ? 'add' : 'invite'} disabled`;
301
- sendUserToast(message);
302
- }
303
- catch (e) {
304
- console.error('Failed to update auto invite:', e);
305
- sendUserToast('Failed to update auto invite', true);
306
- }
307
- loadSettings();
308
- listInvites();
309
- listUsers();
310
- }
311
- const autoInviteOrAddEnabled = $derived(auto_invite_domain != undefined);
312
- // Legacy auto-invite: user already has auto-invite enabled (not auto-add) on a non-cloud instance
313
- // This preserves their existing setup even though auto-invite is deprecated for new setups
314
- const isLegacyAutoInvite = $derived(autoInviteOrAddEnabled && !autoAdd && !isCloudHosted());
315
- // Show auto-invite toggle only for:
316
- // - Cloud hosted users (always available)
317
- // - Legacy users who already have auto-invite enabled (preserve existing setup)
318
- const showAutoInviteToggle = $derived(isCloudHosted() || isLegacyAutoInvite);
319
- // Display mode for labels: for non-cloud, non-legacy users, always show "add"
320
- // For cloud or legacy users, show based on actual autoAdd setting
321
- const displayMode = $derived.by(() => {
322
- if (!isCloudHosted() && !isLegacyAutoInvite) {
323
- return 'add';
324
- }
325
- return autoAdd ? 'add' : 'invite';
235
+ let showInvites = $state(false);
236
+ $effect(() => {
237
+ showInvites = invites?.length > 0 || (auto_invite_domain != undefined && !autoAdd);
326
238
  });
327
239
  </script>
328
240
 
@@ -345,334 +257,336 @@ const displayMode = $derived.by(() => {
345
257
  </div>
346
258
  </div>
347
259
  </div>
260
+ <div class="flex flex-row justify-between items-center pt-2">
261
+ <PageHeader
262
+ title="Members {(filteredUsers?.length ?? users?.length) != undefined
263
+ ? `(${filteredUsers?.length ?? users?.length})`
264
+ : ''}"
265
+ primary={false}
266
+ tooltip="Manage users manually or enable SSO authentication."
267
+ documentationLink="https://www.windmill.dev/docs/core_concepts/authentification"
268
+ />
269
+
270
+ <div class="flex flex-row items-center gap-2 relative whitespace-nowrap">
271
+ <input placeholder="Filter members" bind:value={userFilter} class="input !pl-8" />
272
+ <Search class="absolute left-2" size={14} />
273
+
274
+ <Popover
275
+ floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
276
+ usePointerDownOutside
277
+ >
278
+ {#snippet trigger()}
279
+ <Button
280
+ color={'accent'}
281
+ destructive={auto_invite_domain === undefined}
282
+ variant="default"
283
+ size="xs"
284
+ nonCaptureEvent={true}
285
+ startIcon={{ icon: Mails }}
286
+ >Auto-{showInvites && !autoAdd ? 'invite' : 'add'}: {auto_invite_domain != undefined
287
+ ? 'ON'
288
+ : 'OFF'}
289
+ </Button>
290
+ {/snippet}
291
+ {#snippet content()}
292
+ <div class="flex flex-col items-start p-4">
293
+ <span class="text-sm leading-6 font-semibold">
294
+ {isCloudHosted()
295
+ ? `Auto-add anyone from ${
296
+ auto_invite_domain != undefined ? auto_invite_domain : domain
297
+ }`
298
+ : `Auto-add anyone joining the instance`}
299
+ </span>
300
+
301
+ {#if showInvites}
302
+ <span class="text-xs mb-1 leading-6 pt-2"
303
+ >Mode <Tooltip>Whether to invite or add users directly to the workspace.</Tooltip>
304
+ </span>
305
+ <ToggleButtonGroup
306
+ selected={autoAdd ? 'add' : 'invite'}
307
+ on:selected={async (e) => {
308
+ if (auto_invite_domain != undefined) {
309
+ await removeAllInvitesFromDomain()
310
+ await WorkspaceService.editAutoInvite({
311
+ workspace: $workspaceStore ?? '',
312
+ requestBody: {
313
+ operator: operatorOnly ?? false,
314
+ invite_all: !isCloudHosted(),
315
+ auto_add: e.detail === 'add'
316
+ }
317
+ })
318
+ loadSettings()
319
+ listInvites()
320
+ listUsers()
321
+ autoAdd = e.detail === 'add'
322
+ } else {
323
+ autoAdd = e.detail === 'add'
324
+ }
325
+ }}
326
+ >
327
+ {#snippet children({ item })}
328
+ <ToggleButton value="invite" small label="Auto-invite" {item} />
329
+ <ToggleButton value="add" small label="Auto-add" {item} />
330
+ {/snippet}
331
+ </ToggleButtonGroup>
332
+ {/if}
348
333
 
349
- <Section
350
- label="Members {(filteredUsers?.length ?? users?.length) != undefined
351
- ? `(${filteredUsers?.length ?? users?.length})`
352
- : ''}"
353
- tooltip="Manage users manually or enable SSO authentication."
354
- documentationLink="https://www.windmill.dev/docs/core_concepts/authentification"
355
- >
356
- {#snippet action()}
357
- <div class="flex flex-row items-center gap-2 relative whitespace-nowrap">
358
- <input placeholder="Filter members" bind:value={userFilter} class="input !pl-8" />
359
- <Search class="absolute left-2" size={14} />
334
+ <span class="text-xs mb-1 leading-6 pt-2"
335
+ >Role <Tooltip>Role of the auto-added users</Tooltip></span
336
+ >
337
+ <ToggleButtonGroup
338
+ selected={operatorOnly ? 'operator' : 'developer'}
339
+ on:selected={async (e) => {
340
+ if (auto_invite_domain != undefined) {
341
+ await removeAllInvitesFromDomain()
342
+ await WorkspaceService.editAutoInvite({
343
+ workspace: $workspaceStore ?? '',
344
+ requestBody: {
345
+ operator: e.detail === 'operator',
346
+ invite_all: !isCloudHosted(),
347
+ auto_add: showInvites ? (autoAdd ?? false) : true
348
+ }
349
+ })
350
+ operatorOnly = e.detail === 'operator'
351
+ loadSettings()
352
+ listInvites()
353
+ listUsers()
354
+ } else {
355
+ operatorOnly = e.detail === 'operator'
356
+ }
357
+ }}
358
+ >
359
+ {#snippet children({ item })}
360
+ <ToggleButton
361
+ value="operator"
362
+ label="Operator"
363
+ tooltip="An operator can only execute and view scripts/flows/apps from your workspace, and only those that he has visibility on."
364
+ {item}
365
+ />
366
+ <ToggleButton
367
+ value="developer"
368
+ label="Developer"
369
+ tooltip="A Developer can execute and view scripts/flows/apps, but they can also create new ones and edit those they are allowed to by their path (either u/ or Writer or Admin of their folder found at /f)."
370
+ {item}
371
+ />
372
+ {/snippet}
373
+ </ToggleButtonGroup>
374
+ <div class="pt-2">
375
+ <Toggle
376
+ size="xs"
377
+ checked={auto_invite_domain != undefined}
378
+ on:change={async (e) => {
379
+ await removeAllInvitesFromDomain()
380
+ await WorkspaceService.editAutoInvite({
381
+ workspace: $workspaceStore ?? '',
382
+ requestBody: e.detail
383
+ ? {
384
+ operator: operatorOnly ?? false,
385
+ invite_all: !isCloudHosted(),
386
+ auto_add: showInvites ? (autoAdd ?? false) : true
387
+ }
388
+ : {
389
+ operator: undefined,
390
+ auto_add: undefined
391
+ }
392
+ })
393
+ loadSettings()
394
+ listInvites()
395
+ listUsers()
396
+ }}
397
+ disabled={isCloudHosted() && !allowedAutoDomain}
398
+ options={{
399
+ right: 'Enabled'
400
+ }}
401
+ />
402
+ </div>
403
+ {#if isCloudHosted() && !allowedAutoDomain}
404
+ <div class="text-red-400 text-xs">{domain} domain not allowed for auto-add</div>
405
+ {/if}
406
+ </div>
407
+ {/snippet}
408
+ </Popover>
360
409
 
410
+ {#if instanceGroups.length > 0}
361
411
  <Popover
362
412
  floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
363
413
  usePointerDownOutside
414
+ floatingClass="!z-20"
364
415
  >
365
416
  {#snippet trigger()}
366
417
  <Button
367
- variant="default"
368
- unifiedSize="md"
418
+ color={autoAddInstanceGroups.length > 0 ? 'green' : 'gray'}
419
+ variant="border"
420
+ size="xs"
369
421
  nonCaptureEvent={true}
370
422
  startIcon={{ icon: Mails }}
371
- >Auto-{displayMode}: {autoInviteOrAddEnabled ? 'ON' : 'OFF'}
423
+ >Instance groups: {autoAddInstanceGroups.length}
372
424
  </Button>
373
425
  {/snippet}
374
426
  {#snippet content()}
375
- <div class="flex flex-col items-start p-4 min-w-[320px] max-w-sm">
376
- {#if showAutoInviteToggle}
377
- <div class="text-xs mb-1 text-primary"
378
- >Mode <Tooltip>Whether to invite or add users directly to the workspace.</Tooltip>
379
- </div>
380
- <ToggleButtonGroup
381
- selected={displayMode}
382
- on:selected={async (e) => {
383
- const switchingToAdd = e.detail === 'add' && !autoAdd
427
+ <div class="flex flex-col p-4 min-w-[500px]">
428
+ <div class="flex flex-col gap-4">
429
+ <span class="text-sm leading-6 font-semibold"> Auto-add instance groups </span>
430
+
431
+ <!-- Add new instance group form -->
432
+ {#if availableGroupItems.length > 0}
433
+ <div class="flex w-full mt-1 gap-2 items-end justify-between">
434
+ <div class="flex gap-2 items-end">
435
+ <div class="flex flex-col gap-1">
436
+ <span class="text-xs text-primary">Instance group</span>
437
+ <Select
438
+ items={availableGroupItems}
439
+ placeholder="Select group"
440
+ bind:value={selectedNewInstanceGroup}
441
+ class="max-w-[160px]"
442
+ disablePortal={true}
443
+ />
444
+ </div>
384
445
 
385
- // If switching from invite to add on non-cloud, show confirmation with warning
386
- if (switchingToAdd && isLegacyAutoInvite) {
387
- switchToAutoAddConfirmCallback = async () => {
388
- autoAdd = true
389
- if (autoInviteOrAddEnabled) {
390
- await updateAutoInvite(true)
391
- }
392
- }
393
- } else {
394
- autoAdd = e.detail === 'add'
395
- if (autoInviteOrAddEnabled) {
396
- await updateAutoInvite(true)
397
- }
398
- }
399
- }}
400
- >
401
- {#snippet children({ item })}
402
- <ToggleButton value="invite" small label="Auto-invite" {item} />
403
- <ToggleButton value="add" small label="Auto-add" {item} />
404
- {/snippet}
405
- </ToggleButtonGroup>
446
+ <div class="flex flex-col gap-1">
447
+ <span class="text-xs text-primary">Role</span>
448
+ <ToggleButtonGroup
449
+ selected={selectedNewRole}
450
+ on:selected={(e) => {
451
+ selectedNewRole = e.detail
452
+ }}
453
+ >
454
+ {#snippet children({ item })}
455
+ <ToggleButton
456
+ value="operator"
457
+ label="Operator"
458
+ tooltip="An operator can only execute and view scripts/flows/apps from your workspace, and only those that he has visibility on."
459
+ {item}
460
+ />
461
+ <ToggleButton
462
+ value="developer"
463
+ label="Developer"
464
+ tooltip="A Developer can execute and view scripts/flows/apps, but they can also create new ones and edit those they are allowed to by their path (either u/ or Writer or Admin of their folder found at /f)."
465
+ {item}
466
+ />
467
+ <ToggleButton
468
+ value="admin"
469
+ label="Admin"
470
+ tooltip="An admin has full control over a specific Windmill workspace, including the ability to manage users, edit entities, and control permissions within the workspace."
471
+ {item}
472
+ />
473
+ {/snippet}
474
+ </ToggleButtonGroup>
475
+ </div>
476
+ </div>
406
477
 
407
- {#if isLegacyAutoInvite && !autoAdd}
408
- <div class="mt-3 w-full">
409
- <Alert type="warning" size="xs" title="Legacy mode">
410
- Auto-invite is deprecated. Switching to auto-add will permanently disable
411
- auto-invite for this workspace.
412
- </Alert>
478
+ <Button
479
+ color="blue"
480
+ size="xs"
481
+ startIcon={{ icon: Plus }}
482
+ disabled={!selectedNewInstanceGroup || !selectedNewRole}
483
+ onclick={addInstanceGroup}
484
+ >
485
+ Add
486
+ </Button>
413
487
  </div>
414
488
  {/if}
415
489
 
416
- <div class="mt-6"></div>
417
- {/if}
418
-
419
- <span class="text-xs mb-1">Role <Tooltip>Role of the auto-added users</Tooltip></span>
420
- <ToggleButtonGroup
421
- selected={operatorOnly ? 'operator' : 'developer'}
422
- on:selected={async (e) => {
423
- operatorOnly = e.detail === 'operator'
424
- if (auto_invite_domain != undefined) {
425
- await updateAutoInvite(true)
426
- }
427
- }}
428
- >
429
- {#snippet children({ item })}
430
- <ToggleButton
431
- value="operator"
432
- label="Operator"
433
- tooltip="An operator can only execute and view scripts/flows/apps from your workspace, and only those that he has visibility on."
434
- {item}
435
- />
436
- <ToggleButton
437
- value="developer"
438
- label="Developer"
439
- tooltip="A Developer can execute and view scripts/flows/apps, but they can also create new ones and edit those they are allowed to by their path (either u/ or Writer or Admin of their folder found at /f)."
440
- {item}
441
- />
442
- {/snippet}
443
- </ToggleButtonGroup>
444
-
445
- <div class="mt-6">
446
- <Toggle
447
- checked={autoInviteOrAddEnabled}
448
- on:change={async (e) => {
449
- const enabling = e.detail
450
-
451
- if (enabling) {
452
- // Non-cloud users without legacy auto-invite: force auto-add mode
453
- if (!isCloudHosted() && !isLegacyAutoInvite) {
454
- autoAdd = true
455
- }
456
-
457
- // Show confirmation when enabling auto-add
458
- if (autoAdd || (!isCloudHosted() && !showAutoInviteToggle)) {
459
- autoAddConfirmCallback = async () => {
460
- await updateAutoInvite(true)
461
- }
462
- } else {
463
- await updateAutoInvite(true)
464
- }
465
- } else {
466
- // Disabling: show confirmation if currently using auto-invite (legacy)
467
- if (isLegacyAutoInvite) {
468
- autoInviteDisableConfirmCallback = async () => {
469
- await updateAutoInvite(false)
470
- }
471
- } else {
472
- await updateAutoInvite(false)
473
- }
474
- }
475
- }}
476
- disabled={isCloudHosted() && !allowedAutoDomain}
477
- options={{
478
- right: isCloudHosted()
479
- ? `Auto-${displayMode} anyone from ${
480
- autoInviteOrAddEnabled ? auto_invite_domain : domain
481
- }`
482
- : `Auto-${displayMode} anyone joining the instance`
483
- }}
484
- />
490
+ <!-- Configured groups table -->
491
+ {#if autoAddInstanceGroups.length > 0}
492
+ <div class="flex flex-col gap-2">
493
+ <p class="text-sm font-medium text-secondary">Configured groups:</p>
494
+ <div class="flex flex-col gap-1">
495
+ <table class="w-full text-sm">
496
+ <thead>
497
+ <tr class="text-left text-xs text-primary">
498
+ <th class="pb-2 w-1/2">Group</th>
499
+ <th class="pb-2 w-1/4">Role</th>
500
+ <th class="pb-2 w-1/4"></th>
501
+ </tr>
502
+ </thead>
503
+ <tbody>
504
+ {#each autoAddInstanceGroups as groupName (groupName)}
505
+ {@const group = instanceGroups.find((g) => g.name === groupName)}
506
+ <tr class="border-t border-gray-200 dark:border-gray-700">
507
+ <td class="py-2">
508
+ <div class="font-medium">{groupName}</div>
509
+ {#if group?.summary}
510
+ <div class="text-xs text-primary">{group.summary}</div>
511
+ {/if}
512
+ </td>
513
+ <td class="py-2">
514
+ <div>
515
+ <ToggleButtonGroup
516
+ selected={autoAddInstanceGroupsRoles[groupName] || 'developer'}
517
+ on:selected={async (e) => {
518
+ autoAddInstanceGroupsRoles[groupName] = e.detail
519
+ await updateGroupRole(groupName, e.detail)
520
+ }}
521
+ >
522
+ {#snippet children({ item })}
523
+ <ToggleButton
524
+ value="operator"
525
+ label="Operator"
526
+ tooltip="An operator can only execute and view scripts/flows/apps from your workspace, and only those that he has visibility on."
527
+ {item}
528
+ />
529
+ <ToggleButton
530
+ value="developer"
531
+ label="Developer"
532
+ tooltip="A Developer can execute and view scripts/flows/apps, but they can also create new ones and edit those they are allowed to by their path (either u/ or Writer or Admin of their folder found at /f)."
533
+ {item}
534
+ />
535
+ <ToggleButton
536
+ value="admin"
537
+ label="Admin"
538
+ tooltip="An admin has full control over a specific Windmill workspace, including the ability to manage users, edit entities, and control permissions within the workspace."
539
+ {item}
540
+ />
541
+ {/snippet}
542
+ </ToggleButtonGroup>
543
+ </div>
544
+ </td>
545
+ <td class="py-2">
546
+ <div class="flex justify-end">
547
+ <Button
548
+ color="light"
549
+ variant="contained"
550
+ btnClasses="text-red-500"
551
+ size="xs"
552
+ spacingSize="xs2"
553
+ onclick={() => {
554
+ removeInstanceGroupConfirmedCallback = async () => {
555
+ await removeInstanceGroup(groupName)
556
+ }
557
+ }}
558
+ >
559
+ Remove
560
+ </Button>
561
+ </div>
562
+ </td>
563
+ </tr>
564
+ {/each}
565
+ </tbody>
566
+ </table>
567
+ </div>
568
+ </div>
569
+ {:else}
570
+ <div class="text-center text-primary text-sm py-4">
571
+ No instance groups configured for auto-add
572
+ </div>
573
+ {/if}
485
574
  </div>
486
- {#if isCloudHosted() && !allowedAutoDomain}
487
- <div class="text-red-400 text-xs">{domain} domain not allowed for auto-add</div>
488
- {/if}
489
575
  </div>
490
576
  {/snippet}
491
577
  </Popover>
578
+ {/if}
492
579
 
493
- {#if instanceGroups.length > 0}
494
- <Popover
495
- floatingConfig={{ strategy: 'absolute', placement: 'bottom-end' }}
496
- usePointerDownOutside
497
- floatingClass="!z-20"
498
- >
499
- {#snippet trigger()}
500
- <Button
501
- color={autoAddInstanceGroups.length > 0 ? 'green' : 'gray'}
502
- variant="border"
503
- size="xs"
504
- nonCaptureEvent={true}
505
- startIcon={{ icon: Mails }}
506
- >Instance groups: {autoAddInstanceGroups.length}
507
- </Button>
508
- {/snippet}
509
- {#snippet content()}
510
- <div class="flex flex-col p-4 min-w-[500px]">
511
- <div class="flex flex-col gap-4">
512
- <span class="text-sm leading-6 font-semibold"> Auto-add instance groups </span>
513
-
514
- <!-- Add new instance group form -->
515
- {#if availableGroupItems.length > 0}
516
- <div class="flex w-full mt-1 gap-2 items-end justify-between">
517
- <div class="flex gap-2 items-end">
518
- <div class="flex flex-col gap-1">
519
- <span class="text-xs text-primary">Instance group</span>
520
- <Select
521
- items={availableGroupItems}
522
- placeholder="Select group"
523
- bind:value={selectedNewInstanceGroup}
524
- class="max-w-[160px]"
525
- disablePortal={true}
526
- />
527
- </div>
528
-
529
- <div class="flex flex-col gap-1">
530
- <span class="text-xs text-primary">Role</span>
531
- <ToggleButtonGroup
532
- selected={selectedNewRole}
533
- on:selected={(e) => {
534
- selectedNewRole = e.detail
535
- }}
536
- >
537
- {#snippet children({ item })}
538
- <ToggleButton
539
- value="operator"
540
- label="Operator"
541
- tooltip="An operator can only execute and view scripts/flows/apps from your workspace, and only those that he has visibility on."
542
- {item}
543
- />
544
- <ToggleButton
545
- value="developer"
546
- label="Developer"
547
- tooltip="A Developer can execute and view scripts/flows/apps, but they can also create new ones and edit those they are allowed to by their path (either u/ or Writer or Admin of their folder found at /f)."
548
- {item}
549
- />
550
- <ToggleButton
551
- value="admin"
552
- label="Admin"
553
- tooltip="An admin has full control over a specific Windmill workspace, including the ability to manage users, edit entities, and control permissions within the workspace."
554
- {item}
555
- />
556
- {/snippet}
557
- </ToggleButtonGroup>
558
- </div>
559
- </div>
560
-
561
- <Button
562
- color="blue"
563
- size="xs"
564
- startIcon={{ icon: Plus }}
565
- disabled={!selectedNewInstanceGroup || !selectedNewRole}
566
- onclick={addInstanceGroup}
567
- >
568
- Add
569
- </Button>
570
- </div>
571
- {/if}
572
-
573
- <!-- Configured groups table -->
574
- {#if autoAddInstanceGroups.length > 0}
575
- <div class="flex flex-col gap-2">
576
- <p class="text-sm font-medium text-secondary">Configured groups:</p>
577
- <div class="flex flex-col gap-1">
578
- <table class="w-full text-sm">
579
- <thead>
580
- <tr class="text-left text-xs text-primary">
581
- <th class="pb-2 w-1/2">Group</th>
582
- <th class="pb-2 w-1/4">Role</th>
583
- <th class="pb-2 w-1/4"></th>
584
- </tr>
585
- </thead>
586
- <tbody>
587
- {#each autoAddInstanceGroups as groupName (groupName)}
588
- {@const group = instanceGroups.find((g) => g.name === groupName)}
589
- <tr class="border-t border-gray-200 dark:border-gray-700">
590
- <td class="py-2">
591
- <div class="font-medium">{groupName}</div>
592
- {#if group?.summary}
593
- <div class="text-xs text-primary">{group.summary}</div>
594
- {/if}
595
- </td>
596
- <td class="py-2">
597
- <div>
598
- <ToggleButtonGroup
599
- selected={autoAddInstanceGroupsRoles[groupName] || 'developer'}
600
- on:selected={async (e) => {
601
- autoAddInstanceGroupsRoles[groupName] = e.detail
602
- await updateGroupRole(groupName, e.detail)
603
- }}
604
- >
605
- {#snippet children({ item })}
606
- <ToggleButton
607
- value="operator"
608
- label="Operator"
609
- tooltip="An operator can only execute and view scripts/flows/apps from your workspace, and only those that he has visibility on."
610
- {item}
611
- />
612
- <ToggleButton
613
- value="developer"
614
- label="Developer"
615
- tooltip="A Developer can execute and view scripts/flows/apps, but they can also create new ones and edit those they are allowed to by their path (either u/ or Writer or Admin of their folder found at /f)."
616
- {item}
617
- />
618
- <ToggleButton
619
- value="admin"
620
- label="Admin"
621
- tooltip="An admin has full control over a specific Windmill workspace, including the ability to manage users, edit entities, and control permissions within the workspace."
622
- {item}
623
- />
624
- {/snippet}
625
- </ToggleButtonGroup>
626
- </div>
627
- </td>
628
- <td class="py-2">
629
- <div class="flex justify-end">
630
- <Button
631
- color="light"
632
- variant="contained"
633
- btnClasses="text-red-500"
634
- size="xs"
635
- spacingSize="xs2"
636
- onclick={() => {
637
- removeInstanceGroupConfirmedCallback = async () => {
638
- await removeInstanceGroup(groupName)
639
- }
640
- }}
641
- >
642
- Remove
643
- </Button>
644
- </div>
645
- </td>
646
- </tr>
647
- {/each}
648
- </tbody>
649
- </table>
650
- </div>
651
- </div>
652
- {:else}
653
- <div class="text-center text-primary text-sm py-4">
654
- No instance groups configured for auto-add
655
- </div>
656
- {/if}
657
- </div>
658
- </div>
659
- {/snippet}
660
- </Popover>
661
- {/if}
662
-
663
- {#if showAutoInviteToggle}
664
- <InviteUser {inviteUser} />
665
- {/if}
666
-
667
- <AddUser
668
- on:new={() => {
669
- listUsers()
670
- listInvites()
671
- }}
672
- />
673
- </div>
674
- {/snippet}
580
+ <AddUser
581
+ on:new={() => {
582
+ listUsers()
583
+ listInvites()
584
+ }}
585
+ />
586
+ </div>
587
+ </div>
675
588
 
589
+ <div class="">
676
590
  <DataTable
677
591
  shouldLoadMore={(filteredUsers?.length ?? 0) > 30}
678
592
  loadMore={30}
@@ -701,8 +615,8 @@ const displayMode = $derived.by(() => {
701
615
  first one
702
616
  </Tooltip>
703
617
  </Cell>
618
+ <Cell head>Status</Cell>
704
619
  <Cell head>Role</Cell>
705
- <Cell head>Enabled</Cell>
706
620
  <Cell head last>
707
621
  <span class="sr-only">Actions</span>
708
622
  </Cell>
@@ -743,6 +657,15 @@ const displayMode = $derived.by(() => {
743
657
  class="animate-spin"
744
658
  />{/if}</Cell
745
659
  >
660
+ <Cell>
661
+ <div class="flex gap-1">
662
+ {#if disabled}
663
+ <Badge color="red">Disabled</Badge>
664
+ {:else}
665
+ <Badge color="green">Enabled</Badge>
666
+ {/if}
667
+ </div>
668
+ </Cell>
746
669
  <Cell>
747
670
  <div>
748
671
  {#if added_via?.source === 'instance_group'}
@@ -806,10 +729,13 @@ const displayMode = $derived.by(() => {
806
729
  </div>
807
730
  </Cell>
808
731
  <Cell>
809
- <Toggle
810
- checked={!disabled}
811
- on:change={async (e) => {
812
- try {
732
+ <div class="flex gap-1">
733
+ <Button
734
+ color="light"
735
+ variant="contained"
736
+ size="xs"
737
+ spacingSize="xs2"
738
+ on:click={async () => {
813
739
  await UserService.updateUser({
814
740
  workspace: $workspaceStore ?? '',
815
741
  username,
@@ -817,43 +743,24 @@ const displayMode = $derived.by(() => {
817
743
  disabled: !disabled
818
744
  }
819
745
  })
820
- sendUserToast(`User ${username} ${disabled ? 'enabled' : 'disabled'}`)
821
746
  listUsers()
822
- } catch (e) {
823
- console.error('Failed to update user status:', e)
824
- sendUserToast('Failed to update user status', true)
825
- }
826
- }}
827
- size="xs"
828
- />
829
- </Cell>
830
- <Cell>
831
- <div class="flex gap-1">
832
- {#snippet removeUserButton(disabled: boolean)}
833
- <Button
834
- unifiedSize="sm"
835
- variant="subtle"
836
- destructive
837
- {disabled}
838
- onClick={() => {
839
- deleteConfirmedCallback = async () => {
840
- await UserService.deleteUser({
841
- workspace: $workspaceStore ?? '',
842
- username
843
- })
844
- sendUserToast('User removed')
845
- listUsers()
846
- }
847
- }}
848
- startIcon={{ icon: UserMinus }}
849
- >
850
- Remove
851
- </Button>
852
- {/snippet}
747
+ }}
748
+ >
749
+ {disabled ? 'Enable' : 'Disable'}
750
+ </Button>
853
751
 
854
752
  {#if added_via?.source === 'instance_group'}
855
753
  <div class="flex items-center gap-1">
856
- {@render removeUserButton(true)}
754
+ <Button
755
+ color="light"
756
+ variant="contained"
757
+ btnClasses="text-gray-400"
758
+ size="xs"
759
+ spacingSize="xs2"
760
+ disabled={true}
761
+ >
762
+ Remove
763
+ </Button>
857
764
  <Tooltip
858
765
  >Cannot remove users synced from instance groups. Either disable the user or
859
766
  remove them from the SCIM group.</Tooltip
@@ -861,8 +768,11 @@ const displayMode = $derived.by(() => {
861
768
  </div>
862
769
  {:else if canConvertToGroup(user)}
863
770
  <Button
864
- variant="accent"
865
- unifiedSize="sm"
771
+ color="light"
772
+ variant="contained"
773
+ btnClasses="text-blue-500"
774
+ size="xs"
775
+ spacingSize="xs2"
866
776
  on:click={() => {
867
777
  convertConfirmedCallback = async () => {
868
778
  await convertUserToGroup(username)
@@ -871,8 +781,45 @@ const displayMode = $derived.by(() => {
871
781
  >
872
782
  Convert
873
783
  </Button>
784
+ <Button
785
+ color="light"
786
+ variant="contained"
787
+ btnClasses="text-red-500"
788
+ size="xs"
789
+ spacingSize="xs2"
790
+ on:click={() => {
791
+ deleteConfirmedCallback = async () => {
792
+ await UserService.deleteUser({
793
+ workspace: $workspaceStore ?? '',
794
+ username
795
+ })
796
+ sendUserToast('User removed')
797
+ listUsers()
798
+ }
799
+ }}
800
+ >
801
+ Remove
802
+ </Button>
874
803
  {:else}
875
- {@render removeUserButton(false)}
804
+ <Button
805
+ color="light"
806
+ variant="contained"
807
+ btnClasses="text-red-500"
808
+ size="xs"
809
+ spacingSize="xs2"
810
+ on:click={() => {
811
+ deleteConfirmedCallback = async () => {
812
+ await UserService.deleteUser({
813
+ workspace: $workspaceStore ?? '',
814
+ username
815
+ })
816
+ sendUserToast('User removed')
817
+ listUsers()
818
+ }
819
+ }}
820
+ >
821
+ Remove
822
+ </Button>
876
823
  {/if}
877
824
  </div>
878
825
  </Cell>
@@ -889,27 +836,23 @@ const displayMode = $derived.by(() => {
889
836
  {/if}
890
837
  </tbody>
891
838
  </DataTable>
892
- </Section>
893
-
894
- <div class="pt-12"></div>
839
+ </div>
895
840
 
896
841
  <WorkspaceOperatorSettings />
897
842
 
898
- <div class="pt-12"></div>
899
-
900
- {#if invites?.length > 0}
901
- <Section
902
- label="Invites ({invites.length ?? ''})"
843
+ {#if showInvites}
844
+ <PageHeader
845
+ title="Invites ({invites.length ?? ''})"
846
+ primary={false}
903
847
  tooltip="Manage invites on your workspace."
904
848
  documentationLink="https://www.windmill.dev/docs/core_concepts/authentification#adding-users-to-a-workspace"
905
849
  >
906
- {#snippet action()}
907
- {#if showAutoInviteToggle}
908
- <div class="flex gap-2 items-center">
909
- <InviteUser {inviteUser} />
910
- </div>
911
- {/if}
912
- {/snippet}
850
+ <div class="flex gap-2 items-center">
851
+ <InviteUser on:new={listInvites} />
852
+ </div>
853
+ </PageHeader>
854
+
855
+ <div>
913
856
  <DataTable>
914
857
  <Head>
915
858
  <tr>
@@ -970,13 +913,9 @@ const displayMode = $derived.by(() => {
970
913
  </div>
971
914
  </Cell>
972
915
  <Cell last>
973
- <Button
974
- variant="default"
975
- destructive
976
- unifiedSize="sm"
977
- startIcon={{ icon: X }}
978
- btnClasses="w-fit"
979
- onClick={async () => {
916
+ <button
917
+ class="ml-2 text-red-500"
918
+ onclick={async () => {
980
919
  await WorkspaceService.deleteInvite({
981
920
  workspace: $workspaceStore ?? '',
982
921
  requestBody: {
@@ -988,8 +927,8 @@ const displayMode = $derived.by(() => {
988
927
  listInvites()
989
928
  }}
990
929
  >
991
- Cancel invite
992
- </Button>
930
+ Cancel
931
+ </button>
993
932
  </Cell>
994
933
  </Row>
995
934
  {/each}
@@ -1008,8 +947,9 @@ const displayMode = $derived.by(() => {
1008
947
  <button class="ml-4" onclick={() => (nbInviteDisplayed += 50)}>load 50 more</button></span
1009
948
  >
1010
949
  {/if}
1011
- </Section>
950
+ </div>
1012
951
  {/if}
952
+
1013
953
  <ConfirmationModal
1014
954
  open={Boolean(deleteConfirmedCallback)}
1015
955
  title="Remove user"
@@ -1077,68 +1017,3 @@ const displayMode = $derived.by(() => {
1077
1017
  </ul>
1078
1018
  </div>
1079
1019
  </ConfirmationModal>
1080
-
1081
- <!-- Auto-add/invite confirmation modals - z-index to appear above popover -->
1082
- <div class="[&>div]:!z-[5002]">
1083
- <ConfirmationModal
1084
- open={Boolean(autoAddConfirmCallback)}
1085
- title="Enable Auto-add"
1086
- confirmationText="Enable"
1087
- on:canceled={() => {
1088
- autoAddConfirmCallback = undefined
1089
- }}
1090
- on:confirmed={() => {
1091
- if (autoAddConfirmCallback) {
1092
- autoAddConfirmCallback()
1093
- }
1094
- autoAddConfirmCallback = undefined
1095
- }}
1096
- >
1097
- Are you sure you want to enable auto-add?<br />
1098
- Anyone added to the instance will automatically join this workspace.
1099
- </ConfirmationModal>
1100
- </div>
1101
-
1102
- <div class="[&>div]:!z-[5002]">
1103
- <ConfirmationModal
1104
- open={Boolean(autoInviteDisableConfirmCallback)}
1105
- title="Disable Auto-invite"
1106
- confirmationText="Disable"
1107
- on:canceled={() => {
1108
- autoInviteDisableConfirmCallback = undefined
1109
- }}
1110
- on:confirmed={() => {
1111
- if (autoInviteDisableConfirmCallback) {
1112
- autoInviteDisableConfirmCallback()
1113
- }
1114
- autoInviteDisableConfirmCallback = undefined
1115
- }}
1116
- >
1117
- Are you sure you want to disable auto-invite? Auto-invite is a legacy feature. After disabling,
1118
- it will no longer be available for this workspace. You will only be able to use auto-add. <br />
1119
- Anyone added to the instance will automatically join this workspace.
1120
- </ConfirmationModal>
1121
- </div>
1122
-
1123
- <div class="[&>div]:!z-[5002]">
1124
- <ConfirmationModal
1125
- open={Boolean(switchToAutoAddConfirmCallback)}
1126
- title="Switch to Auto-add"
1127
- confirmationText="Switch"
1128
- on:canceled={() => {
1129
- switchToAutoAddConfirmCallback = undefined
1130
- }}
1131
- on:confirmed={() => {
1132
- if (switchToAutoAddConfirmCallback) {
1133
- switchToAutoAddConfirmCallback()
1134
- }
1135
- switchToAutoAddConfirmCallback = undefined
1136
- }}
1137
- >
1138
- Are you sure you want to switch from auto-invite to auto-add?<br />
1139
- Auto-invite is a legacy feature. After switching to auto-add, auto-invite will no longer be available
1140
- for this workspace. <br />
1141
- With auto-add, anyone added to the instance will automatically join this workspace without needing
1142
- to accept an invitation.
1143
- </ConfirmationModal>
1144
- </div>