openclaw/docs/start
Peter Steinberger 4157ed60ff
fix(ui): stop serving a failed Control UI build on the next Gateway start (#161438)
* fix(ui): stop serving a failed Control UI build on the next Gateway start

Rolldown writes the complete bundle, runs the writeBundle hook, and only
then reports aggregated resolve errors and exits non-zero. scripts/ui.mts
built straight into the served dist/control-ui and reused the runtime build
identity, so a failed build left a correctly stamped tree that the Gateway's
asset health check accepted as ready on the next start (observed: a bare
markdown-it-emoji import broke the Control UI after a gateway-profile worktree
install skipped ui/ dependencies).

scripts/ui.mts now builds into a same-depth dist/control-ui.build-<pid>-*
sibling, runs both validators against it, and renames it into place only on
success, restoring the previous output if publication fails. Dead-process
leftovers are reclaimed on the next build and tsdown's dist cleaning skips
in-flight staging trees. The gateway worktree-setup workload now installs
./ui... because the Gateway builds the Control UI from source on first start.

* fix(ui): restore the previous Control UI bundle after an interrupted swap

A builder killed between moving dist/control-ui aside and renaming its staged build into place left the previous complete bundle only in a dead-process .retired sibling, which the next build's leftover cleanup deleted. The next build now restores the newest dead-process retired bundle when the served path is missing, before reclaiming leftovers, so a failed retry still serves it.

* fix(ui): keep interrupted Control UI builds out of packages

A killed builder cannot reach its cleanup, so a dist/control-ui.build-* staging or retired sibling can survive until the next UI build. Exclude those siblings from the package files list, which also drives the dist inventory, and type the new UI test fixtures for the scripts test lane.

* fix(ui): retry transient Windows denials when publishing the Control UI build

Windows scanners and indexers can briefly deny renaming a freshly written or served directory with EPERM, which failed an otherwise valid rebuild on its first attempt. Every publication rename now retries EPERM, EACCES, and EBUSY on a bounded 100-1600 ms schedule (about 3 s) and keeps restoring the previous bundle when the denial is permanent.
2026-09-30 03:28:17 +00:00
..
why-openclaw feat: run Code Mode on Node or isolated QuickJS (#154522) 2026-09-21 17:33:04 -07:00
bootstrapping.md improve(agents): stop agents refusing or arguing over requested work (#157447) 2026-09-24 16:16:21 -05:00
docs-directory.md
getting-started.md
hubs.md docs: remove stale showcase section (#158575) 2026-09-25 21:11:35 -06:00
lore.md
onboarding-overview.md fix(onboarding): fail fast on unavailable model endpoints (#160813) 2026-09-28 17:48:54 -07:00
onboarding.md fix(onboarding): default to Full tools and unify catalog discovery (#150596) 2026-09-17 12:46:58 +05:30
openclaw.md fix: explain why chat attachments could not be sent (#151913) 2026-09-18 09:11:59 -07:00
setup.md fix(ui): stop serving a failed Control UI build on the next Gateway start (#161438) 2026-09-30 03:28:17 +00:00
teams.md docs: guide team server deployment and identity setup (#157085) 2026-09-23 23:49:23 -07:00
why-openclaw.md
wizard-cli-automation.md fix: skip official setup approvals and default to Astra (#145646) 2026-09-12 00:34:25 -07:00
wizard-cli-reference.md fix(daemon): forced reinstall moves an unpinned Bun Gateway service to Node (#160189) 2026-09-28 12:26:32 -07:00
wizard.md fix(onboarding): stop claiming inference is ready after Skip for now (#160713) 2026-09-28 15:17:40 -07:00