{"record":{"id":"f2fd06e9bef2f1c7","repo":"windmill-labs/windmill","slug":"failed-to-push-shared-ui-folder-e","errorCode":null,"errorMessage":"Failed to push shared UI folder: ${e}","messagePattern":"Failed to push shared UI folder: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cli/src/commands/sync/sync.ts","lineNumber":6525,"sourceCode":"        })();\n\n        pool.add(promise);\n        // Remove from pool when complete\n        promise.then(() => {\n          pool.delete(promise);\n          if (isFolderGroup) folderPhaseRemaining--;\n        });\n      }\n\n      // Wait for at least one task to complete before continuing\n      if (pool.size > 0) {\n        await Promise.race(pool);\n      }\n    }\n    try {\n      await pushSharedUi(workspace.workspaceId, opts.keepDeleted);\n    } catch (e) {\n      log.warn(`Failed to push shared UI folder: ${e}`);\n    }\n    try {\n      await offerToRunNewMigrations(\n        workspace.workspaceId,\n        newDatatableMigrations,\n        {\n          yes: opts.yes,\n          jsonOutput: opts.jsonOutput,\n        },\n      );\n    } catch (e: any) {\n      log.warn(\n        `Failed to run new datatable migrations: ${e?.body ?? e?.message ?? e}`,\n      );\n    }\n    const lockJobs = await checkServerLockJobs(\n      workspace.workspaceId,\n      pushStartedAt,","sourceCodeStart":6507,"sourceCodeEnd":6543,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/sync/sync.ts#L6507-L6543","documentation":"After applying file changes, `wmill sync push` pushes the shared UI folder out-of-band via pushSharedUi(). Failures there are caught and logged as a warning so the main push result is not invalidated — but the shared UI folder may be stale on the remote.","triggerScenarios":"pushSharedUi throws due to network errors, API auth/permission failures, or invalid shared UI files while `wmill sync push` runs with the shared UI feature enabled.","commonSituations":"Token lacking write access to shared UI folder; server version without shared UI support; transient network failure at end of a long push.","solutions":["Read the interpolated error to identify the cause (HTTP status / network).","Re-run `wmill sync push` (regular files already pushed; only shared UI will retry).","Verify token permissions for the shared UI folder, or push with an admin/deployer token.","If your server doesn't support shared UI, upgrade the server or disable shared UI syncing."],"exampleFix":"// Verify and retry manually:\n// before\nwmill sync push\n// → warn: Failed to push shared UI folder: ...\n// after\nwmill sync push --dry-run  # confirm access, then re-push with valid token\nwmill sync push","handlingStrategy":"try-catch","validationCode":"// Pre-check shared UI access before pushing:\ntry {\n  await wmill.getFolder({ workspace, path: 'u/shared_ui' });\n} catch {\n  console.warn('Shared UI folder inaccessible; push will skip it');\n}","typeGuard":"function isApiError(e: unknown): e is { statusCode: number; body?: unknown } {\n  return typeof e === 'object' && e !== null && 'statusCode' in e;\n}","tryCatchPattern":"try {\n  await pushSharedUi(workspaceId, keepDeleted);\n} catch (e) {\n  log.warn(`Shared UI push skipped: ${e instanceof Error ? e.message : e}`);\n  // schedule retry or alert; main file push is unaffected\n}","preventionTips":["Verify token permissions for the shared UI folder before sync","Re-run push after transient failures — shared UI push is retried independently","Check server version supports shared UI endpoints","Monitor CI logs for this warning in shared workspaces"],"tags":["cli","sync","shared-ui","push"],"backgroundTag":"shared-ui-push-failed","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}