Problem: When an update was triggered, only the tab that clicked "Apply Update" would show the progress modal and auto-refresh after completion. Other open tabs would remain on the old version indefinitely. Root cause: The UpdateProgressModal was only shown when explicitly opened via the UpdateBanner component. WebSocket already broadcasts update:progress events, but no global listener existed to show the modal in all tabs. Solution: Added GlobalUpdateProgressWatcher component in App.tsx that: - Listens to WebSocket updateProgress events globally (in all tabs) - Filters to only real update-in-progress states (downloading, verifying, extracting, installing, restarting) to avoid false positives from routine update checks - Auto-opens the progress modal when an update starts - Allows manual dismissal after update completes - Works independently of UpdateBanner visibility (e.g., when banner is dismissed) The modal's existing health-check and auto-reload logic handles the page refresh once the backend is healthy again. |
||
|---|---|---|
| .. | ||
| api | ||
| components | ||
| constants | ||
| hooks | ||
| pages | ||
| stores | ||
| styles | ||
| test | ||
| types | ||
| utils | ||
| App.tsx | ||
| constants.ts | ||
| index.css | ||
| index.tsx | ||
| vite-env.d.ts | ||