From a511db78cbea89719e0688b2ee9b96e952dfe3f7 Mon Sep 17 00:00:00 2001 From: Aaron Roberts Date: Wed, 10 Jun 2026 21:55:23 +0100 Subject: [PATCH] Fix blank screen on Analyze; add mode selector to result view showResultView now only activates after results exist (not during loading), preventing AnimatePresence from blanking the screen mid-transition. Adds a mode selector + Analyze button at the top of the result view so additional modes can be run without leaving the page. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/App.jsx | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 83c5d12..d0d04b0 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -54,10 +54,8 @@ function App() { const COMMITTABLE_MODES = new Set(['plain_ocr', 'describe', 'freeform']) const MODE_LABELS = { plain_ocr: 'OCR Text', describe: 'Description', freeform: 'Freeform' } - // Show the full-screen result view when any committable mode has a result (or is loading) - const showResultView = view === 'new_job' && ( - Object.keys(modeResults).length > 0 || (loading && COMMITTABLE_MODES.has(mode)) - ) + // Show the full-screen result view once at least one committable mode has a result + const showResultView = view === 'new_job' && Object.keys(modeResults).length > 0 const handleFileTypeChange = useCallback((newType) => { setImage(null) @@ -254,7 +252,7 @@ function App() {
- {/* ── Full-screen OCR result view (plain_ocr + result) ── */} + {/* ── Full-screen OCR result view ── */} {showResultView ? ( + {/* Run additional modes */} +
+ +
+ + {loading + ? <> Processing... + : <> Analyze} + + {error &&

{error}

} +
+
+ {/* Image + Text */}
{imagePreview && typeof imagePreview === 'string' ? (