clusev/lang/en
boban 72b82df7a1 fix(update): surface update failures instead of spinning forever
A dashboard-triggered update that failed on the host left the /update-progress
page spinning to a vague 10-minute timeout — no error was ever shown, because
nothing wrote a failure marker for the page to read. Fix: make failures visible
and prevent the credential-prompt hang class.

- docker/restart-sentinel/watch.sh: run update.sh under `timeout -k 30 1800` with
  its output tee'd to run/update.log; on ANY non-zero exit (update.sh or its
  exec'd install.sh) — and on the early compose-missing / updater-missing paths —
  write {"stage":"error"} to run/update-phase.json via write_update_error().
- update.sh: export GIT_TERMINAL_PROMPT=0 + GIT_HTTP_LOW_SPEED_* and wrap the pull
  in `timeout 300`, so a private-repo credential miss fails fast instead of
  hanging on a non-interactive prompt.
- DeploymentService::updatePhase(): whitelist the 'error' stage.
- update-progress.blade.php: add an error state (#js-status-error) + showError();
  the status-feed poll now stops and shows it on stage=error, marking the active
  phase red — instead of looping.
- lang/{en,de}/update.php: error_heading / error_hint / back_button.
- UpdateProgressTest: feed surfaces stage=error; page renders the error branch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 18:58:32 +02:00
..
accounts.php docs: rename the generated password "one-time" → "initial" (rotation is optional) 2026-07-02 22:43:09 +02:00
audit.php feat(release): publish + yank UI, strings, audit labels 2026-06-23 03:28:49 +02:00
auth.php docs: fix stale first-login copy (random initial password, rotation optional) 2026-07-02 22:50:35 +02:00
backend.php fix(hardening): guard against root-login self-lockout 2026-06-25 00:41:50 +02:00
common.php chore: remove dead code — sidecar host-PTY path, node-pty, unused lang keys + component 2026-06-26 07:16:11 +02:00
dashboard.php feat(i18n): bilingual foundation (DE/EN) + localize auth/dashboard/servers/fleet/account 2026-06-13 22:36:16 +02:00
errors.php feat(auth): guests-only BlockBannedIp middleware + 403 page 2026-06-20 17:45:16 +02:00
files.php feat(branding): favicons + PWA manifest, and custom branded error pages 2026-06-14 15:27:49 +02:00
help.php feat(wg): WireGuard help topic (registration + DE/EN content + test) 2026-06-20 22:46:04 +02:00
mail.php fix(security): harden brute-force, rate-limiting and auth-DoS (audit follow-up) 2026-06-17 17:59:45 +02:00
modals.php feat(ssh-keys): name an added SSH key so it is identifiable 2026-06-25 00:53:49 +02:00
onboarding.php feat(onboarding): first-run spotlight tour — dimmed backdrop, sidebar highlights, relaunchable 2026-07-02 20:00:19 +02:00
release.php feat(release): publish + yank UI, strings, audit labels 2026-06-23 03:28:49 +02:00
servers.php chore: remove dead code — sidecar host-PTY path, node-pty, unused lang keys + component 2026-06-26 07:16:11 +02:00
services.php fix(services): live journal poll + command-palette server search 2026-06-14 20:13:08 +02:00
sessions.php feat(sessions): database sessions + list/revoke (other devices, per-user, global) with remember-token rotation 2026-06-14 23:34:00 +02:00
settings.php chore: remove dead code — sidecar host-PTY path, node-pty, unused lang keys + component 2026-06-26 07:16:11 +02:00
shell.php feat(terminal): web terminal — per-server SSH + Clusev host PTY (xterm.js + node sidecar) 2026-06-25 03:21:10 +02:00
system.php feat: short clusev commands in versions panel, lang strings, MOTD 2026-06-19 23:18:25 +02:00
terminal.php feat(ui): shield-only 2FA indicator in the sidebar + terminal search from 2 servers 2026-06-25 20:20:46 +02:00
update.php fix(update): surface update failures instead of spinning forever 2026-07-03 18:58:32 +02:00
validation.php feat(i18n): custom bilingual validation messages (DE + EN) 2026-06-14 15:45:02 +02:00
versions.php feat(versions): show the available release's changelog before updating (v0.9.49) 2026-06-21 23:48:37 +02:00
wireguard.php ux(wg): endpoint field is host-only (no apparent double port) (v0.9.47) 2026-06-21 23:25:44 +02:00