• release(v1.7.39-alpha): hotfix web-ui perms after OTA (nginx 500) + startup self-heal

    Ghost released this 2026-04-22 17:26:54 +00:00 | 523 commits to main since this release

    v1.7.38 shipped with an OTA bug: the tar-extracted staging dir inherited 700
    perms and nginx (www-data) returned 500/403 on every request after the swap.
    .116 hit this on rollout; had to chmod by hand to recover.

    • update.rs: after extraction, explicitly chmod 755 dirs + 644 files on the
      new staging dir before the mv into place, so nginx can stat/serve them.
    • main.rs: self-heal on startup — if /opt/archipelago/web-ui is not
      world-readable, run sudo chmod -R u=rwX,go=rX to repair. This is what
      rescues nodes upgrading from v1.7.37/v1.7.38, since their extractor
      (running on the old binary) doesn't have the chmod fix yet — the new
      binary's first boot fixes the mess before nginx serves a single request.

    Everything v1.7.38 shipped is still in this release:

    • auth.rs auto-heals is_onboarding_complete() from setup_complete +
      password_hash so nodes don't bounce back to /onboarding/intro after
      browser clear / reboot / update
    • useOnboarding tri-state: backend-unreachable no longer defaults to intro
    • login sounds gated by isFirstInstallPhase() — silent after onboarding,
      typing sounds unaffected
    • FIPS app / Nostr Relay / Nostr VPN / Routstr / Penpot removed from
      catalog + frontend + Rust + docker + icons; 15 image versions deleted
      from tx1138, .168, gitea-local
    • AIUI baked into release tarball via demo/aiui/
    • prebuild hook syncs app-catalog/catalog.json → public/catalog.json

    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

    Downloads