mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-27 20:29:10 +00:00
4003e7c047
The helper container that runs `docker compose up --force-recreate` was spawned with `docker run -d`, so the command returned immediately with just the container ID. Any failure happening INSIDE the helper (bad compose file, image mismatch, permission issue, socket problem) was invisible: execFile's callback only fired for `docker run` command errors, never for errors inside the detached helper. The UI fell back to the generic 3-minute "Local update did not complete" heuristic with no actionable information. The helper now runs attached, so execFile's callback receives the helper's exit code and stderr directly for any failure that happens before the recreate kills this process. Additionally, the helper persists exit code + stderr to `/app/data/.sencho-update-error` before exiting, so the error survives the gateway's own death. On startup, `SelfUpdateService.recoverPreviousError()` reads and deletes that file, routing the real error through the existing `getLastError()` path so the freshly booted gateway reports exactly why the previous attempt failed instead of the generic timeout.