Skip to content

fix(ui): back-to-hosting link + no-F5 backups list#46

Merged
nechodom merged 1 commit into
mainfrom
fix/backup-ux
Jul 13, 2026
Merged

fix(ui): back-to-hosting link + no-F5 backups list#46
nechodom merged 1 commit into
mainfrom
fix/backup-ux

Conversation

@nechodom

@nechodom nechodom commented Jul 5, 2026

Copy link
Copy Markdown
Owner

What

Two backup-flow papercuts reported after the last round of testing.

1. No way back from the job progress page

Starting a backup redirects to /jobs/<id> (progress bar), which only had an All jobs link — no way back to the hosting. Adds a ← Back to <target> button.

JobView::hosting_target() allow-lists the kinds whose target is a single hosting selector (backup, install, migration, restore, hosting_clone, acme_issue, wp_install, profile_apply, …). Cluster / bulk / panel-import jobs carry a label (or nothing) there, so they don't render a dead link to /hostings/<label>.

2. Backups list was stale on return (needed F5)

Coming back to the hosting detail page showed the old list — the new backup only appeared after a manual refresh, because the page was cached.

  • Wrapped the backups list in a data-live-refresh="15" region: a running backup flips to ok, and a backup started from the job page shows up on its own.
  • The shared refresh driver (base.html) now:
    • fetches with cache: 'no-store' — defeats the stale HTTP cache that forced the F5;
    • force-ticks every live region on bfcache pageshow — the exact back-navigation case. Also benefits Stats + Service health.

Verify

  • cargo check -p hyperion-web green (Askama compiles job.hosting_target() + the new region nesting).
  • Back link only renders for hosting-scoped job kinds.

Note

main's Cargo.lock is missing ~218 transitive entries (chacha20, cfg_aliases, …) that cargo wants to add — a pre-existing drift, left out of this PR to keep it scoped. Worth a separate chore: sync Cargo.lock if CI ever runs --locked.

🤖 Generated with Claude Code

Two backup-flow papercuts:

1. Job progress page (/jobs/<id>) had no way back to the hosting
   the job belongs to — only "All jobs". Add a "← Back to <target>"
   button for hosting-scoped jobs. New JobView::hosting_target()
   allow-lists the kinds whose `target` is a single hosting selector
   (backup, install, migration, restore, clone, acme_issue,
   wp_install, profile_apply, …) so cluster/bulk/panel-import jobs
   (whose target is a label or nothing) don't render a dead link.

2. Backups list on the hosting detail page was served stale after
   returning from the job page — user had to F5. Wrap the list in a
   data-live-refresh region (15s) so a running backup flips to ok and
   a backup started elsewhere appears on its own. The shared refresh
   driver now fetches with cache:'no-store' (defeats the stale HTTP
   cache) and force-ticks every live region on bfcache pageshow (the
   exact back-navigation case), benefiting Stats + Service health too.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@nechodom nechodom merged commit f8a441d into main Jul 13, 2026
1 check passed
@nechodom nechodom deleted the fix/backup-ux branch July 13, 2026 10:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant