From 416c9dce0e8a0890ede00a4a09d34eacdcbec181 Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Wed, 18 Mar 2026 12:52:30 +0000 Subject: [PATCH] Fix QC scroll, show error toasts, enable Apache WS module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ProofDetailView: remove h-full from root div so content can scroll naturally (h-full was capping height at viewport, blocking scroll) - App.tsx: wire up error state to a top toast banner so users see failures (campaign load, proof upload, etc.) instead of silent drops; auto-dismiss after 8s, same pattern as notification toast - Apache: enabled mod_proxy_wstunnel (was missing — proxy_http was handling WebSocket connections and dropping them due to HTTP-level timeouts; wstunnel provides a proper bidirectional tunnel) Co-Authored-By: Claude Sonnet 4.6 --- frontend/App.tsx | 23 ++++++++++++++++++++++- frontend/components/Campaigns.tsx | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/frontend/App.tsx b/frontend/App.tsx index a01bfa0..2eb7c8f 100755 --- a/frontend/App.tsx +++ b/frontend/App.tsx @@ -83,7 +83,13 @@ const AppContent: React.FC<{ msalInstance: any }> = ({ msalInstance }) => { const [selectedCampaign, setSelectedCampaign] = useState(initialUrlState.campaignName); const [selectedProof, setSelectedProof] = useState(null); const [pendingProofId, setPendingProofId] = useState(initialUrlState.proofId); - const [error, setError] = useState(null); + const [error, setErrorState] = useState(null); + const errorTimerRef = React.useRef | null>(null); + const setError = (msg: string | null) => { + setErrorState(msg); + if (errorTimerRef.current) clearTimeout(errorTimerRef.current); + if (msg) errorTimerRef.current = setTimeout(() => setErrorState(null), 8000); + }; const [isLoadingData, setIsLoadingData] = useState(true); const [notification, setNotification] = useState(null); const notificationTimerRef = React.useRef | null>(null); @@ -981,6 +987,21 @@ const AppContent: React.FC<{ msalInstance: any }> = ({ msalInstance }) => { + {/* Error toast */} + {error && ( +
+ + + +

{error}

+ +
+ )} + {/* Model fallback notification toast */} {notification && (
diff --git a/frontend/components/Campaigns.tsx b/frontend/components/Campaigns.tsx index 366fee9..577136d 100755 --- a/frontend/components/Campaigns.tsx +++ b/frontend/components/Campaigns.tsx @@ -1673,7 +1673,7 @@ const ProofDetailView: React.FC<{ } return ( -
+