From 7e344e75da87f14e20d70ca15549451900254382 Mon Sep 17 00:00:00 2001 From: Silberengel Date: Tue, 19 May 2026 11:12:55 +0200 Subject: [PATCH] fix advanced editor responsiveness and a bug-fix --- electron/main.cjs | 7 +- .../AdvancedEventLabDialog.tsx | 423 +++++++++--------- 2 files changed, 219 insertions(+), 211 deletions(-) diff --git a/electron/main.cjs b/electron/main.cjs index 8484d0d9..2d7452f7 100644 --- a/electron/main.cjs +++ b/electron/main.cjs @@ -345,9 +345,10 @@ function createWindow() { contextIsolation: true, nodeIntegration: false, sandbox: true, - // Packaged shell is loopback `http://127.0.0.1` → public HTTPS APIs; Chromium CORS blocks - // renderer `fetch` unless disabled for this window (IPC + net.fetch still used as defense). - webSecurity: !app.isPackaged + // Always on: CORS, CSP, and mixed-content protections. Loopback packaged shell still reaches + // public APIs via `relaxCorsForRendererSubresources()` (media/HLS) and `imwald:backend-request` + // IPC (`electronAwareFetch` for translate + LanguageTool). + webSecurity: true } }) diff --git a/src/components/AdvancedEventLab/AdvancedEventLabDialog.tsx b/src/components/AdvancedEventLab/AdvancedEventLabDialog.tsx index 1b106e33..01a95769 100644 --- a/src/components/AdvancedEventLab/AdvancedEventLabDialog.tsx +++ b/src/components/AdvancedEventLab/AdvancedEventLabDialog.tsx @@ -3,7 +3,6 @@ import { Input } from '@/components/ui/input' import { Dialog, DialogContent, - DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog' @@ -644,7 +643,7 @@ export default function AdvancedEventLabDialog({ '.cm-scroller': { overflow: 'auto', minHeight: 0 }, // Large dvh mins fight stacked flex/grid rows and overflow onto the preview; host + row cap height instead. '.cm-content': { - minHeight: '11rem', + minHeight: '12rem', fontFamily: 'var(--font-mono, ui-monospace, monospace)' }, // LanguageTool hits: drop default thin SVG underline, use thick wavy line (see `LT_GRAMMAR_MARK_CLASS`). @@ -878,203 +877,30 @@ export default function AdvancedEventLabDialog({ {t('Advanced event lab')} -
-
- {isLanguageToolConfigured() ? ( -
- - setLtLangFilter(e.target.value)} - placeholder={t('Language list filter placeholder')} - className="h-8" - aria-label={t('Language list filter placeholder')} - /> -
-
- {ltListFiltered.map((code) => ( - - - - ))} -
- - -
- ) : null} - {isTranslateConfigured() ? ( -
- {translateLoad === 'idle' || translateLoad === 'loading' ? ( -

{t('Advanced lab translation languages loading')}

- ) : null} - {translateLoad === 'ready' ? ( -
-
- - setTranslateSrcFilter(e.target.value)} - placeholder={t('Language list filter placeholder')} - className="h-8" - aria-label={t('Language list filter placeholder')} - /> -
-
- {showTranslateSourceAuto ? ( - {t('Advanced lab translation source auto')} - ) : null} - {translateLangsFilteredSrc.map((l) => ( - - - - ))} -
- - -
-
- - setTranslateTgtFilter(e.target.value)} - placeholder={t('Language list filter placeholder')} - className="h-8" - aria-label={t('Language list filter placeholder')} - /> -
-
- {translateLangsFilteredTgt.map((l) => ( - - - - ))} -
- - -
- -
- ) : null} - {translateLoad === 'empty' ? ( -

{t('Advanced lab translation languages empty')}

- ) : null} - {translateLoad === 'error' ? ( -

{t('Advanced lab translation languages error')}

- ) : null} - - ) : null} - {contextEventId && isTranslateConfigured() ? ( - - ) : null} - - - + -
- { const next = v as 'edit' | 'preview' if (next === 'preview') flushPreviewDocNow() setLabBodyTab(next) }} - className="flex min-h-0 flex-1 flex-col gap-2" + className="flex flex-col gap-2" > @@ -1092,20 +918,20 @@ export default function AdvancedEventLabDialog({
-
+
- {formatToolbar ? ( -
{formatToolbar}
+ {formatToolbar ? ( +
{formatToolbar}
) : null} - - - - +
+
+ + +
+
+ +
+
+ {isLanguageToolConfigured() ? ( +
+ + setLtLangFilter(e.target.value)} + placeholder={t('Language list filter placeholder')} + className="h-8" + aria-label={t('Language list filter placeholder')} + /> +
+
+ {ltListFiltered.map((code) => ( + + + + ))} +
+ + +
+ ) : null} + {isTranslateConfigured() ? ( +
+ {translateLoad === 'idle' || translateLoad === 'loading' ? ( +

{t('Advanced lab translation languages loading')}

+ ) : null} + {translateLoad === 'ready' ? ( +
+
+ + setTranslateSrcFilter(e.target.value)} + placeholder={t('Language list filter placeholder')} + className="h-8" + aria-label={t('Language list filter placeholder')} + /> +
+
+ {showTranslateSourceAuto ? ( + {t('Advanced lab translation source auto')} + ) : null} + {translateLangsFilteredSrc.map((l) => ( + + + + ))} +
+ + +
+
+ + setTranslateTgtFilter(e.target.value)} + placeholder={t('Language list filter placeholder')} + className="h-8" + aria-label={t('Language list filter placeholder')} + /> +
+
+ {translateLangsFilteredTgt.map((l) => ( + + + + ))} +
+ + +
+ +
+ ) : null} + {translateLoad === 'empty' ? ( +

{t('Advanced lab translation languages empty')}

+ ) : null} + {translateLoad === 'error' ? ( +

{t('Advanced lab translation languages error')}

+ ) : null} +
+ ) : null} + {contextEventId && isTranslateConfigured() ? ( + + ) : null} +
+
+ ) @@ -1137,9 +1143,10 @@ export default function AdvancedEventLabDialog({ /** Responsive shell: ~5× prior max width cap and ~3× vertical use of viewport (still clamped). */ function cnDialogShell(): string { return [ - 'z-[250] max-w-none flex min-h-0 flex-col gap-0 overflow-hidden p-0', + 'z-[250] !flex max-w-none flex-col gap-0 overflow-hidden p-0', 'w-[min(98vw,calc(72rem*5))]', - 'h-[min(94vh,calc(28rem*3))]', - 'max-h-[min(96vh,90dvh)]' + 'max-h-[min(96vh,90dvh)]', + 'top-[max(0.5rem,env(safe-area-inset-top,0px))] !translate-y-0', + 'sm:top-[50%] sm:!translate-y-[-50%]' ].join(' ') }