feat(cluster): GUI-Repair-Button für Config-Drift + Stale-Chunk-Auto-Reload — v1.2.86

Cluster/Replication:
- Drift-Banner: Button 'Resync erzwingen' baut die PG-Logical-Replication-
  Subscription neu auf (via edgeguard-ctl cluster-setup-standby).
- Primary-Dispatch: Button auf dem Primary delegiert per mTLS an den
  Standby (POST /agent/cluster/repair-replication); auf dem Standby lokal.
- Status-Proxy Primary->Standby via Aggregator.FanOut; Erfolg = Job-success
  ODER drift_found wird false (--collect-Unit verschwindet nach Erfolg).
- Job als transiente systemd-Unit edgeguard-repair-replication.service
  (sudoers exact-match + festes Script wie upgrade.sh).
- Banner-Text korrigiert (keine 'Outbox').

Frontend-Stabilität:
- Stale-Chunk-Auto-Reload: Lazy-Import-Fehler nach Deploy ('Failed to fetch
  dynamically imported module') lösen einen einmaligen Reload aus (Loop-
  Schutz via sessionStorage) statt einer Fehlerseite. Globaler
  vite:preloadError-Listener + ErrorBoundary-Integration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Debian
2026-06-04 12:10:41 +02:00
parent 025854150d
commit f7dd7a3a4b
11 changed files with 582 additions and 19 deletions

View File

@@ -1,12 +1,17 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { ensureStorageSchema } from './lib/storageSchema'
import { installStaleChunkReload } from './lib/staleChunkReload'
// Vor allen anderen Imports die Storage prüfen — i18n und auth-store
// lesen beim Modul-Init aus Storage, also muss der Cleanup davor
// passieren wenn die Schema-Version nicht stimmt.
ensureStorageSchema()
// Stale-Chunk-Reload global registrieren: fängt Lazy-Import-Fehler nach
// einem Deploy ab und lädt einmalig neu, statt eine Fehlerseite zu zeigen.
installStaleChunkReload()
import './styles/enterprise.css'
import './i18n'
import App from './App.tsx'