windmill-components 1.504.5 → 1.510.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 (202) hide show
  1. package/package/ata/index.js +1 -1
  2. package/package/components/AppConnectInner.svelte +161 -29
  3. package/package/components/ArgInput.svelte +33 -103
  4. package/package/components/AuthSettings.svelte +45 -1
  5. package/package/components/Dev.svelte +31 -24
  6. package/package/components/DisplayResult.svelte +53 -26
  7. package/package/components/DisplayResult.svelte.d.ts +1 -1
  8. package/package/components/DynSelect.svelte +3 -3
  9. package/package/components/Editor.svelte +7 -4
  10. package/package/components/EditorBar.svelte +2 -2
  11. package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
  12. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
  13. package/package/components/FlowBuilder.svelte +11 -2
  14. package/package/components/FlowJobResult.svelte +12 -17
  15. package/package/components/FlowJobResult.svelte.d.ts +5 -18
  16. package/package/components/FlowPreviewContent.svelte +13 -10
  17. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  18. package/package/components/FlowPreviewResult.svelte +14 -6
  19. package/package/components/FlowStatusViewer.svelte +11 -24
  20. package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
  21. package/package/components/FlowStatusViewerInner.svelte +110 -131
  22. package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
  23. package/package/components/GitDiffPreview.svelte +55 -0
  24. package/package/components/GitDiffPreview.svelte.d.ts +13 -0
  25. package/package/components/HistoricInputs.svelte +2 -2
  26. package/package/components/InitGitRepoPopover.svelte +410 -0
  27. package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
  28. package/package/components/InstanceSetting.svelte +21 -9
  29. package/package/components/InstanceSettings.svelte +16 -3
  30. package/package/components/JobLoader.svelte +567 -0
  31. package/package/components/JobLoader.svelte.d.ts +53 -0
  32. package/package/components/JobLogs.svelte +6 -4
  33. package/package/components/JobLogs.svelte.d.ts +5 -18
  34. package/package/components/LightweightResourcePicker.svelte +18 -39
  35. package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
  36. package/package/components/LogViewer.svelte +35 -41
  37. package/package/components/LogViewer.svelte.d.ts +6 -20
  38. package/package/components/ModulePreviewResultViewer.svelte +3 -1
  39. package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
  40. package/package/components/ModuleTest.svelte +16 -11
  41. package/package/components/PullGitRepoPopover.svelte +355 -0
  42. package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
  43. package/package/components/S3FilePicker.svelte +5 -3
  44. package/package/components/SavedInputs.svelte +2 -2
  45. package/package/components/ScriptBuilder.svelte +4 -3
  46. package/package/components/ScriptEditor.svelte +34 -31
  47. package/package/components/ScriptEditor.svelte.d.ts +3 -3
  48. package/package/components/ServiceLogsInner.svelte +2 -1
  49. package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
  50. package/package/components/UserSettings.svelte +1 -1
  51. package/package/components/WorkerTagSelect.svelte +32 -3
  52. package/package/components/apps/components/buttons/AppButton.svelte +7 -1
  53. package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  54. package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
  55. package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
  56. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
  57. package/package/components/apps/components/display/AppMenu.svelte +5 -0
  58. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
  59. package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
  60. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
  61. package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
  62. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
  63. package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
  64. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
  65. package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
  66. package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
  67. package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
  68. package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
  69. package/package/components/apps/editor/component/components.d.ts +12 -0
  70. package/package/components/apps/editor/component/components.js +19 -7
  71. package/package/components/assets/AssetButtons.svelte +38 -0
  72. package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
  73. package/package/components/assets/AssetsDropdownButton.svelte +60 -72
  74. package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
  75. package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
  76. package/package/components/assets/JobAssetsViewer.svelte +79 -0
  77. package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
  78. package/package/components/assets/README_DEV.md +0 -0
  79. package/package/components/assets/lib.d.ts +9 -1
  80. package/package/components/assets/lib.js +48 -7
  81. package/package/components/common/fileUpload/FileUpload.svelte +126 -84
  82. package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
  83. package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
  84. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
  85. package/package/components/common/table/ScriptRow.svelte +3 -1
  86. package/package/components/copilot/autocomplete/Autocompletor.js +23 -5
  87. package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
  88. package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
  89. package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
  90. package/package/components/copilot/chat/flow/core.d.ts +1 -1
  91. package/package/components/copilot/chat/flow/core.js +2 -38
  92. package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
  93. package/package/components/copilot/chat/navigator/apiTools.js +95 -15
  94. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  95. package/package/components/copilot/chat/navigator/core.js +2 -1
  96. package/package/components/copilot/chat/script/core.d.ts +11 -2
  97. package/package/components/copilot/chat/script/core.js +135 -1
  98. package/package/components/copilot/chat/shared.d.ts +10 -0
  99. package/package/components/copilot/chat/shared.js +56 -0
  100. package/package/components/copilot/lib.d.ts +1 -0
  101. package/package/components/copilot/lib.js +27 -9
  102. package/package/components/custom_ui.d.ts +1 -0
  103. package/package/components/flows/FlowAssetsHandler.svelte +133 -0
  104. package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
  105. package/package/components/flows/content/FlowModuleComponent.svelte +16 -18
  106. package/package/components/flows/flowStore.d.ts +1 -1
  107. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
  108. package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
  109. package/package/components/flows/scheduleUtils.js +1 -1
  110. package/package/components/flows/types.d.ts +2 -1
  111. package/package/components/graph/FlowGraphV2.svelte +8 -104
  112. package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
  113. package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
  114. package/package/components/graph/graphBuilder.svelte.js +35 -9
  115. package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
  116. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
  117. package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
  118. package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
  119. package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
  120. package/package/components/graph/util.js +1 -1
  121. package/package/components/home/ItemsList.svelte +2 -0
  122. package/package/components/icons/AssetGenericIcon.svelte +0 -3
  123. package/package/components/jobs/JobPreview.svelte +10 -6
  124. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
  125. package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
  126. package/package/components/runs/JobPreview.svelte +26 -16
  127. package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
  128. package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
  129. package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
  130. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  131. package/package/components/schema/AddPropertyFormV2.svelte +42 -33
  132. package/package/components/schema/AddPropertyFormV2.svelte.d.ts +1 -0
  133. package/package/components/schema/AddPropertyV2.svelte +2 -1
  134. package/package/components/schema/AddPropertyV2.svelte.d.ts +1 -0
  135. package/package/components/schema/EditableSchemaWrapper.svelte +3 -1
  136. package/package/components/schema/editable_schema_wrapper.d.ts +3 -0
  137. package/package/components/scriptEditor/LogPanel.svelte +3 -2
  138. package/package/components/script_builder.d.ts +2 -2
  139. package/package/components/settings/CreateToken.svelte +76 -41
  140. package/package/components/settings/CreateToken.svelte.d.ts +1 -1
  141. package/package/components/settings/ScopeSelector.svelte +613 -0
  142. package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
  143. package/package/components/settings/TokenDisplay.svelte +103 -0
  144. package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
  145. package/package/components/settings/TokensTable.svelte +70 -349
  146. package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
  147. package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
  148. package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
  149. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
  150. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
  151. package/package/components/triggers/TriggersEditor.svelte +45 -3
  152. package/package/components/triggers/TriggersWrapper.svelte +2 -2
  153. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +43 -2
  154. package/package/components/triggers/gcp/utils.js +9 -1
  155. package/package/components/triggers/http/OpenAPISpecGenerator.svelte +1 -0
  156. package/package/components/triggers/http/RouteEditorInner.svelte +208 -164
  157. package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
  158. package/package/components/triggers/http/utils.js +9 -3
  159. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +43 -2
  160. package/package/components/triggers/kafka/utils.js +9 -1
  161. package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
  162. package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
  163. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +178 -9
  164. package/package/components/triggers/mqtt/utils.js +9 -1
  165. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +43 -2
  166. package/package/components/triggers/nats/utils.js +9 -1
  167. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
  168. package/package/components/triggers/postgres/utils.js +9 -1
  169. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +34 -88
  170. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +43 -2
  171. package/package/components/triggers/sqs/utils.js +9 -1
  172. package/package/components/triggers/utils.js +12 -0
  173. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +43 -2
  174. package/package/components/triggers/websocket/utils.js +11 -1
  175. package/package/components/workspaceSettings/AISettings.svelte +0 -2
  176. package/package/components/workspaceSettings/FilterList.svelte +56 -0
  177. package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
  178. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
  179. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
  180. package/package/gen/core/OpenAPI.js +1 -1
  181. package/package/gen/schemas.gen.d.ts +305 -23
  182. package/package/gen/schemas.gen.js +305 -23
  183. package/package/gen/services.gen.d.ts +33 -1
  184. package/package/gen/services.gen.js +66 -2
  185. package/package/gen/types.gen.d.ts +216 -11
  186. package/package/history.svelte.js +0 -2
  187. package/package/hub.d.ts +1 -0
  188. package/package/hubPaths.json +5 -2
  189. package/package/infer.js +16 -10
  190. package/package/svelte5Utils.svelte.d.ts +1 -0
  191. package/package/svelte5Utils.svelte.js +25 -18
  192. package/package/toast.js +10 -0
  193. package/package/utils.d.ts +3 -2
  194. package/package/utils.js +20 -5
  195. package/package.json +11 -11
  196. package/package/components/ResultJobLoader.svelte +0 -219
  197. package/package/components/ResultJobLoader.svelte.d.ts +0 -52
  198. package/package/components/TestJobLoader.svelte +0 -274
  199. package/package/components/TestJobLoader.svelte.d.ts +0 -43
  200. package/package/components/icons/AssetVarIcon.svelte +0 -31
  201. package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
  202. /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
@@ -0,0 +1,410 @@
1
+ <script lang="ts">import { Button } from './common';
2
+ import Popover from './meltComponents/Popover.svelte';
3
+ import { Alert } from './common';
4
+ import { Loader2, Eye, Save, CheckCircle2, XCircle, UploadCloud, AlertTriangle, Terminal, ChevronDown, ChevronUp } from 'lucide-svelte';
5
+ import { workspaceStore } from '../stores';
6
+ import hubPaths from '../hubPaths.json';
7
+ import { JobService } from '../gen';
8
+ import { tryEvery } from '../utils';
9
+ import GitDiffPreview from './GitDiffPreview.svelte';
10
+ import { page } from '$app/stores';
11
+ let { gitRepoResourcePath, branchName, uiState } = $props();
12
+ let _branchName = $state(branchName ?? '');
13
+ let previewResult = $state(undefined);
14
+ let isPreviewLoading = $state(false);
15
+ let isInitializing = $state(false);
16
+ let initResult = $state(null);
17
+ let initGitRepoPopover = $state(null);
18
+ let previewJobId = $state(null);
19
+ let previewJobStatus = $state(undefined);
20
+ let pushJobId = $state(null);
21
+ let pushJobStatus = $state(undefined);
22
+ let isCliInfoExpanded = $state(false);
23
+ async function previewChanges() {
24
+ console.log('Previewing changes for repo:', gitRepoResourcePath);
25
+ isPreviewLoading = true;
26
+ previewJobId = null;
27
+ previewJobStatus = undefined;
28
+ try {
29
+ const workspace = $workspaceStore;
30
+ if (!workspace) {
31
+ previewResult = undefined;
32
+ isPreviewLoading = false;
33
+ return;
34
+ }
35
+ // Pass UI state directly as JSON to CLI
36
+ const payloadObj = {
37
+ workspace_id: workspace,
38
+ repo_url_resource_path: gitRepoResourcePath,
39
+ branch_to_push: _branchName,
40
+ dry_run: true,
41
+ settings_json: JSON.stringify(uiState)
42
+ };
43
+ const jobId = await JobService.runScriptByPath({
44
+ workspace,
45
+ path: hubPaths.gitInitRepo,
46
+ requestBody: payloadObj,
47
+ skipPreprocessor: true
48
+ });
49
+ previewJobId = jobId;
50
+ previewJobStatus = 'running';
51
+ // Wait for job completion (polling)
52
+ let jobSuccess = false;
53
+ await tryEvery({
54
+ tryCode: async () => {
55
+ const testResult = await JobService.getCompletedJob({
56
+ workspace,
57
+ id: jobId
58
+ });
59
+ jobSuccess = !!testResult.success;
60
+ },
61
+ timeoutCode: async () => {
62
+ try {
63
+ await JobService.cancelQueuedJob({
64
+ workspace,
65
+ id: jobId,
66
+ requestBody: {
67
+ reason: 'Preview job timed out after 15s'
68
+ }
69
+ });
70
+ }
71
+ catch (err) {
72
+ console.error(err);
73
+ }
74
+ },
75
+ interval: 500,
76
+ timeout: 15000
77
+ });
78
+ if (jobSuccess) {
79
+ const result = await JobService.getCompletedJobResult({
80
+ workspace,
81
+ id: jobId
82
+ });
83
+ console.log('Preview result:', result);
84
+ // Convert new CLI format to expected format
85
+ const added = [];
86
+ const deleted = [];
87
+ const modified = [];
88
+ if (result &&
89
+ result.changes &&
90
+ Array.isArray(result.changes)) {
91
+ for (const change of result.changes) {
92
+ if (change.type === 'added') {
93
+ added.push(change.path);
94
+ }
95
+ else if (change.type === 'deleted') {
96
+ deleted.push(change.path);
97
+ }
98
+ else if (change.type === 'modified') {
99
+ modified.push(change.path);
100
+ }
101
+ }
102
+ }
103
+ previewResult = { added, deleted, modified };
104
+ previewJobStatus = 'success';
105
+ }
106
+ else {
107
+ previewResult = undefined;
108
+ previewJobStatus = 'failure';
109
+ }
110
+ }
111
+ catch (error) {
112
+ console.error('Failed to preview changes:', error);
113
+ previewResult = undefined;
114
+ previewJobStatus = 'failure';
115
+ }
116
+ finally {
117
+ isPreviewLoading = false;
118
+ }
119
+ }
120
+ async function initializeRepo() {
121
+ const workspace = $workspaceStore;
122
+ if (!workspace)
123
+ return;
124
+ console.log('Initializing repo:', gitRepoResourcePath, 'in workspace:', workspace);
125
+ isInitializing = true;
126
+ initResult = null;
127
+ pushJobId = null;
128
+ pushJobStatus = undefined;
129
+ try {
130
+ // Pass UI state directly as JSON to CLI
131
+ const jobId = await JobService.runScriptByPath({
132
+ workspace,
133
+ path: hubPaths.gitInitRepo,
134
+ requestBody: {
135
+ workspace_id: workspace,
136
+ repo_url_resource_path: gitRepoResourcePath,
137
+ branch_to_push: _branchName,
138
+ settings_json: JSON.stringify(uiState)
139
+ },
140
+ skipPreprocessor: true
141
+ });
142
+ pushJobId = jobId;
143
+ pushJobStatus = 'running';
144
+ let jobSuccess = false;
145
+ await tryEvery({
146
+ tryCode: async () => {
147
+ const testResult = await JobService.getCompletedJob({
148
+ workspace,
149
+ id: jobId
150
+ });
151
+ jobSuccess = !!testResult.success;
152
+ },
153
+ timeoutCode: async () => {
154
+ try {
155
+ await JobService.cancelQueuedJob({
156
+ workspace,
157
+ id: jobId,
158
+ requestBody: {
159
+ reason: 'Push job timed out after 5s'
160
+ }
161
+ });
162
+ }
163
+ catch (err) {
164
+ console.error(err);
165
+ }
166
+ },
167
+ interval: 500,
168
+ timeout: 10000
169
+ });
170
+ pushJobStatus = jobSuccess ? 'success' : 'failure';
171
+ initResult = {
172
+ success: jobSuccess,
173
+ message: jobSuccess ? undefined : 'Failed to initialize repository.'
174
+ };
175
+ // Reset popover state after successful push
176
+ if (jobSuccess) {
177
+ setTimeout(() => {
178
+ previewResult = undefined;
179
+ pushJobId = null;
180
+ pushJobStatus = undefined;
181
+ initResult = null;
182
+ initGitRepoPopover?.close();
183
+ }, 1500); // Small delay to show success state
184
+ }
185
+ }
186
+ catch (error) {
187
+ console.error('Failed to initialize repo:', error);
188
+ pushJobStatus = 'failure';
189
+ initResult = { success: false, message: 'Failed to initialize repository.' };
190
+ }
191
+ finally {
192
+ isInitializing = false;
193
+ }
194
+ }
195
+ </script>
196
+
197
+ <Popover
198
+ bind:this={initGitRepoPopover}
199
+ floatingConfig={{
200
+ placement: 'top-start',
201
+ strategy: 'fixed',
202
+ flip: false,
203
+ shift: true
204
+ }}
205
+ contentClasses="p-4 w-1/3"
206
+ >
207
+ <svelte:fragment slot="trigger">
208
+ <Button
209
+ color="dark"
210
+ size="sm"
211
+ nonCaptureEvent
212
+ onclick={initGitRepoPopover?.open}
213
+ startIcon={{ icon: UploadCloud }}
214
+ >
215
+ Push workspace to Git repo
216
+ </Button>
217
+ </svelte:fragment>
218
+ <svelte:fragment slot="content" let:close>
219
+ <div class="flex flex-col gap-4">
220
+ <div class="flex flex-col gap-2">
221
+ <h3 class="text-lg font-semibold">Push workspace to Git repository</h3>
222
+ <div class="prose max-w-none text-2xs text-tertiary">
223
+ This action will push all workspace objects that match your current filter settings to the
224
+ selected branch in your Git repository. <span
225
+ class="text-orange-600 flex items-center gap-1"
226
+ ><AlertTriangle size={14} /> Any existing content in the branch will be replaced with the
227
+ filtered workspace content.</span
228
+ >
229
+
230
+ <!-- Collapsible CLI Info Section -->
231
+ <div class="mt-2 border rounded-md">
232
+ <button
233
+ class="w-full flex items-center justify-between p-1.5 bg-surface-secondary hover:bg-surface-hover"
234
+ onclick={() => (isCliInfoExpanded = !isCliInfoExpanded)}
235
+ >
236
+ <span class="font-medium flex items-center gap-2">
237
+ <Terminal size={14} />
238
+ Windmill CLI to pull from Windmill and push to git
239
+ </span>
240
+ {#if isCliInfoExpanded}
241
+ <ChevronUp size={16} />
242
+ {:else}
243
+ <ChevronDown size={16} />
244
+ {/if}
245
+ </button>
246
+
247
+ {#if isCliInfoExpanded}
248
+ <div class="p-1 bg-surface-tertiary">
249
+ <div class="text-2xs mb-2">
250
+ Not familiar with Windmill CLI? <a
251
+ href="https://www.windmill.dev/docs/advanced/cli/sync"
252
+ class="text-blue-500 hover:text-blue-600 underline"
253
+ target="_blank"
254
+ rel="noopener noreferrer">Check out the docs</a
255
+ >
256
+ </div>
257
+ <div class="font-mono text-2xs">
258
+ <pre class="overflow-auto max-h-60"
259
+ ><code
260
+ >npm install -g windmill-cli
261
+ wmill workspace add {$workspaceStore} {$workspaceStore} {`${$page.url.protocol}//${$page.url.hostname}/`}
262
+ wmill init
263
+ # adjust wmill.yaml file configuraton as needed
264
+ wmill sync pull
265
+ git add -A
266
+ git commit -m 'Initial commit'
267
+ git push</code
268
+ ></pre
269
+ >
270
+ </div>
271
+ </div>
272
+ {/if}
273
+ </div>
274
+ </div>
275
+ </div>
276
+
277
+ <div class="flex flex-col gap-2">
278
+ <label for="branch-name" class="text-sm font-medium">Push to new branch (optional)</label>
279
+ <div class="prose max-w-none text-2xs text-tertiary">
280
+ Enter a new branch name to push to (e.g so you can merge back into main with a pull
281
+ request). If left blank, the default branch from the git repository resource will be used.
282
+ </div>
283
+ <div class="flex flex-col w-1/4">
284
+ <input
285
+ id="branch-name"
286
+ type="text"
287
+ bind:value={_branchName}
288
+ class="border rounded px-2 py-1"
289
+ />
290
+ </div>
291
+ </div>
292
+
293
+ {#if previewResult}
294
+ <GitDiffPreview {previewResult} />
295
+ {/if}
296
+
297
+ {#if previewJobId}
298
+ <div class="flex items-center gap-2 text-xs text-tertiary">
299
+ {#if previewJobStatus === 'running'}
300
+ <Loader2 class="animate-spin" size={14} />
301
+ {:else if previewJobStatus === 'success'}
302
+ <CheckCircle2 size={14} class="text-green-600" />
303
+ {:else if previewJobStatus === 'failure'}
304
+ <XCircle size={14} class="text-red-700" />
305
+ {/if}
306
+ Preview job:
307
+ <a
308
+ target="_blank"
309
+ class="underline"
310
+ href={`/run/${previewJobId}?workspace=${$workspaceStore}`}
311
+ >
312
+ {previewJobId}
313
+ </a>
314
+ </div>
315
+ {/if}
316
+
317
+ {#if pushJobId}
318
+ <div class="flex items-center gap-2 text-xs text-tertiary">
319
+ {#if pushJobStatus === 'running'}
320
+ <Loader2 class="animate-spin" size={14} />
321
+ {:else if pushJobStatus === 'success'}
322
+ <CheckCircle2 size={14} class="text-green-600" />
323
+ {:else if pushJobStatus === 'failure'}
324
+ <XCircle size={14} class="text-red-700" />
325
+ {/if}
326
+ Push job:
327
+ <a
328
+ target="_blank"
329
+ class="underline"
330
+ href={`/run/${pushJobId}?workspace=${$workspaceStore}`}
331
+ >
332
+ {pushJobId}
333
+ </a>
334
+ </div>
335
+ {/if}
336
+
337
+ <!-- Action row: Cancel on left, Preview/Confirm on right -->
338
+ <div class="flex justify-between items-center mt-4">
339
+ <Button
340
+ color="light"
341
+ size="xs"
342
+ on:click={() => {
343
+ previewResult = undefined
344
+ previewJobId = null
345
+ previewJobStatus = undefined
346
+ pushJobId = null
347
+ pushJobStatus = undefined
348
+ initResult = null
349
+ close()
350
+ }}
351
+ disabled={isPreviewLoading || isInitializing}
352
+ >
353
+ Cancel
354
+ </Button>
355
+ <div class="flex gap-2">
356
+ {#if !previewResult}
357
+ <Button
358
+ size="xs"
359
+ on:click={previewChanges}
360
+ disabled={isPreviewLoading || isInitializing}
361
+ startIcon={{
362
+ icon: isPreviewLoading ? Loader2 : Eye,
363
+ classes: isPreviewLoading ? 'animate-spin' : ''
364
+ }}
365
+ >
366
+ Preview
367
+ </Button>
368
+ {:else}
369
+ <Button
370
+ size="xs"
371
+ on:click={previewChanges}
372
+ disabled={isPreviewLoading || isInitializing}
373
+ startIcon={{
374
+ icon: isPreviewLoading ? Loader2 : Eye,
375
+ classes: isPreviewLoading ? 'animate-spin' : ''
376
+ }}
377
+ title="Preview changes again"
378
+ >
379
+ Preview
380
+ </Button>
381
+ {#if previewResult.added?.length || previewResult.deleted?.length || previewResult.modified?.length}
382
+ <Button
383
+ color="red"
384
+ size="xs"
385
+ on:click={initializeRepo}
386
+ disabled={isPreviewLoading || isInitializing}
387
+ startIcon={{ icon: Save }}
388
+ title="Initialize Git Repo"
389
+ >
390
+ Push
391
+ </Button>
392
+ {/if}
393
+ {/if}
394
+ </div>
395
+ </div>
396
+
397
+ {#if initResult?.message}
398
+ <div class="mt-2">
399
+ <Alert
400
+ type={initResult.success ? 'success' : 'error'}
401
+ title={initResult.success ? 'Success' : 'Error'}
402
+ size="xs"
403
+ >
404
+ {initResult.message}
405
+ </Alert>
406
+ </div>
407
+ {/if}
408
+ </div>
409
+ </svelte:fragment>
410
+ </Popover>
@@ -0,0 +1,13 @@
1
+ type $$ComponentProps = {
2
+ gitRepoResourcePath: string;
3
+ branchName?: string;
4
+ uiState: {
5
+ include_path: string[];
6
+ exclude_path: string[];
7
+ extra_include_path: string[];
8
+ include_type: string[];
9
+ };
10
+ };
11
+ declare const InitGitRepoPopover: import("svelte").Component<$$ComponentProps, {}, "">;
12
+ type InitGitRepoPopover = ReturnType<typeof InitGitRepoPopover>;
13
+ export default InitGitRepoPopover;
@@ -358,9 +358,16 @@ function handleChannelChange(channel, i) {
358
358
  {:else if expiration}
359
359
  <div class="flex flex-row gap-1 items-center">
360
360
  <AlertCircle size={12} class="text-red-600" />
361
- <span class="text-red-600 dark:text-red-400 text-xs"
362
- >License key expired on {expiration}</span
363
- >
361
+ <span class="text-red-600 dark:text-red-400 text-xs">
362
+ {#if $values[setting.key]?.endsWith('__dev')}
363
+ Dev license key expired on {expiration}.<br />If even after successful
364
+ renewal, your dev license key is still expired, it means that your production
365
+ key has expired due to unpaid invoices or excessive use of your production
366
+ instance.
367
+ {:else}
368
+ License key expired on {expiration}.
369
+ {/if}
370
+ </span>
364
371
  </div>
365
372
  {:else}
366
373
  <div class="flex flex-row gap-1 items-center">
@@ -392,12 +399,17 @@ function handleChannelChange(channel, i) {
392
399
  : 'text-red-600'
393
400
  )}
394
401
  >
395
- {latestKeyRenewalAttempt.result === 'success'
396
- ? 'Latest key renewal succeeded'
397
- : isTrial
398
- ? 'Latest key renewal ignored because in trial'
399
- : 'Latest key renewal failed'}
400
- on {attemptedAt}
402
+ {#if latestKeyRenewalAttempt.result === 'success' && $values[setting.key]?.endsWith('__dev')}
403
+ Latest dev key renewal succeeded on {attemptedAt}. The dev key expiry was
404
+ updated to align with your current production key's expiration date.
405
+ {:else}
406
+ {latestKeyRenewalAttempt.result === 'success'
407
+ ? 'Latest key renewal succeeded'
408
+ : isTrial
409
+ ? 'Latest key renewal ignored because in trial'
410
+ : 'Latest key renewal failed'}
411
+ on {attemptedAt}
412
+ {/if}
401
413
  </span>
402
414
  </div>
403
415
  {#snippet text()}
@@ -171,9 +171,19 @@ function setupSnowflakeUrls() {
171
171
  };
172
172
  oauths['snowflake_oauth'].connect_config = connect_config;
173
173
  }
174
+ let sendingStats = $state(false);
174
175
  async function sendStats() {
175
- await SettingService.sendStats();
176
- sendUserToast('Usage sent');
176
+ try {
177
+ sendingStats = true;
178
+ await SettingService.sendStats();
179
+ sendUserToast('Usage sent');
180
+ }
181
+ catch (err) {
182
+ throw err;
183
+ }
184
+ finally {
185
+ sendingStats = false;
186
+ }
177
187
  }
178
188
  function isValidTeamsChannel(value) {
179
189
  return (typeof value === 'object' &&
@@ -273,8 +283,11 @@ function isValidTeamsChannel(value) {
273
283
  color="light"
274
284
  btnClasses="w-auto"
275
285
  wrapperClasses="mb-4"
276
- size="xs">Send usage</Button
286
+ loading={sendingStats}
287
+ size="xs"
277
288
  >
289
+ Send usage
290
+ </Button>
278
291
  {/if}
279
292
  {:else if category == 'Auth/OAuth/SAML'}
280
293
  <AuthSettings